feat(lms): replace is_closed with timer limit and auto-submit logic

This commit is contained in:
Dmitry Belan
2026-09-20 17:58:23 +03:00
parent 4b1ea99a4d
commit b3e9d9ae18
5 changed files with 142 additions and 25 deletions
+4 -1
View File
@@ -23,7 +23,7 @@ class Assignment(models.Model):
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, limit_choices_to={'role__in': ['TEACHER', 'ADMIN']}, verbose_name='Кем создано')
created_at = models.DateTimeField('Дата создания', auto_now_add=True)
deadline = models.DateTimeField('Дедлайн', blank=True, null=True, help_text='После этого времени ответы не принимаются.')
is_closed = models.BooleanField('Прием ответов закрыт', default=False, help_text='Включите, чтобы вручную закрыть прием ответов на задание.')
time_limit = models.PositiveIntegerField('Лимит времени (минуты)', blank=True, null=True, help_text='Например, 235 для 3ч 55м. Оставьте пустым, если без таймера.')
class Meta:
verbose_name = 'Задание'
@@ -56,6 +56,7 @@ class Question(models.Model):
class Submission(models.Model):
STATUS_CHOICES = (
('IN_PROGRESS', 'В процессе выполнения'),
('PENDING', 'Ожидает проверки'),
('GRADED', 'Проверено'),
)
@@ -64,7 +65,9 @@ class Submission(models.Model):
grade = models.CharField('Оценка', max_length=10, blank=True, null=True)
teacher_feedback = models.TextField('Комментарий учителя', blank=True, null=True)
status = models.CharField('Статус', max_length=20, choices=STATUS_CHOICES, default='PENDING')
started_at = models.DateTimeField('Время начала', blank=True, null=True)
submitted_at = models.DateTimeField('Дата отправки', auto_now_add=True)
is_time_expired = models.BooleanField('Время вышло', default=False)
class Meta:
verbose_name = 'Ответ ученика'