1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from django.db import models
- from django.utils.translation import gettext_lazy as _
- from userprofile.models import Users
- class DutyRoster(models.Model):
- """轮值信息模型"""
- class Status(models.TextChoices):
- ACTIVE = 'ACT', _('进行中')
- UPCOMING = 'UP', _('即将开始')
- COMPLETED = 'COM', _('已完成')
- duty_id = models.AutoField(primary_key=True, verbose_name="轮值ID")
- user = models.ForeignKey(
- Users,
- on_delete=models.CASCADE,
- related_name='duty_rosters',
- verbose_name='轮值同学'
- )
- start_date = models.DateField(verbose_name='开始日期')
- end_date = models.DateField(verbose_name='结束日期')
- status = models.CharField(
- max_length=3,
- choices=Status.choices,
- default=Status.UPCOMING,
- verbose_name='状态'
- )
- todo_items = models.TextField(verbose_name='本周待办事项', blank=True, null=True)
- notes = models.TextField(verbose_name='教研室注意事项', blank=True, null=True)
- cleaning_schedule = models.TextField(verbose_name='打扫卫生安排', blank=True, null=True)
-
- create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
- update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
- class Meta:
- db_table = 'duty_roster'
- verbose_name = '轮值信息'
- verbose_name_plural = "轮值信息"
- ordering = ['-start_date']
- def __str__(self):
- return f"{self.user.name} {self.start_date} ~ {self.end_date}"
- class Meeting(models.Model):
- """组会模型"""
- class MeetingType(models.TextChoices):
- ONLINE = 'ON', _('线上')
- OFFLINE = 'OFF', _('线下')
- HYBRID = 'HYB', _('混合')
-
- meeting_id = models.AutoField(primary_key=True, verbose_name="组会ID")
- title = models.CharField(max_length=200, verbose_name='组会名称')
- meeting_type = models.CharField(
- max_length=3,
- choices=MeetingType.choices,
- default=MeetingType.ONLINE,
- verbose_name='会议形式'
- )
- type_desc = models.CharField(max_length=200, verbose_name='会议类型描述', blank=True, null=True)
- location = models.CharField(max_length=200, verbose_name='会议地点', blank=True, null=True)
- online_link = models.URLField(verbose_name='线上地址', blank=True, null=True)
- meeting_time = models.DateTimeField(verbose_name='会议时间')
- summary = models.TextField(verbose_name='会议纪要', blank=True, null=True)
- summary_doc_id = models.CharField(max_length=100, verbose_name='OnlyOffice文档ID', blank=True, null=True)
- duty_roster = models.ForeignKey(
- DutyRoster,
- on_delete=models.CASCADE,
- related_name='meetings',
- verbose_name='关联轮值'
- )
- published = models.BooleanField(default=False, verbose_name='已发布')
-
- create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
- update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
- class Meta:
- db_table = 'meeting'
- verbose_name = '组会'
- verbose_name_plural = "组会"
- ordering = ['-meeting_time']
- def __str__(self):
- return f"{self.title} ({self.get_meeting_type_display()})"
|