diff --git a/services/backend/apps/task/models.py b/services/backend/apps/task/models.py index 3be2e97..60e54c9 100644 --- a/services/backend/apps/task/models.py +++ b/services/backend/apps/task/models.py @@ -101,8 +101,10 @@ class CompetitionTaskSubmission(BaseModel): def submission_stdout_upload_to(instance, filename) -> str: return f"/submissions/{instance.id}/stdout" - user = models.ForeignKey(User, on_delete=models.CASCADE) - task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE, + verbose_name="пользователь") + task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE, + verbose_name="задание") status = models.CharField( choices=StatusChoices.choices, @@ -112,24 +114,39 @@ class CompetitionTaskSubmission(BaseModel): ) # code or text or file - content = models.FileField(upload_to=submission_content_upload_to) + content = models.FileField(upload_to=submission_content_upload_to, + verbose_name="содержание посылки") # only if task type is checker stdout = models.FileField( - upload_to=submission_stdout_upload_to, null=True, blank=True + upload_to=submission_stdout_upload_to, null=True, blank=True, + verbose_name="вывод программы", + help_text="Используется только при проверке чекером" ) # depends on task type: # - input: {"correct": boolean} # - file: {"total_points": integer, "by_criteria": ["criteria_name": integer]} # - code: {"correct": boolean} - result = models.JSONField(default=None, null=True, blank=True) + result = models.JSONField(default=None, null=True, blank=True, + verbose_name="результат проверки") # just more readable result representation, maybe will be calcuated somehow more complex depends on criteria - earned_points = models.IntegerField(null=True, blank=True) + earned_points = models.IntegerField(null=True, blank=True, + verbose_name="баллы за задание") - checked_at = models.DateTimeField(null=True, blank=True) - plagiarism_checked = models.BooleanField(default=False) - timestamp = models.DateTimeField(auto_now_add=True) + checked_at = models.DateTimeField(null=True, blank=True, + verbose_name="дата проверки") + plagiarism_checked = models.BooleanField(default=False, + verbose_name="проверено на плагиат") + timestamp = models.DateTimeField(auto_now_add=True, + verbose_name="дата отправки") + + class Meta: + verbose_name = "посылка" + verbose_name_plural = "посылки" + + def __str__(self): + return str(self.id) def send_on_review(self): if not self.task.reviewers.exists():