from django.db import models from django.conf import settings class ExamAttempt(models.Model): class Status(models.IntegerChoices): IN_PROGRESS = 1 COMPLETED = 2 EXPIRED = 3 user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) exam = models.ForeignKey("labs.Exam", on_delete=models.CASCADE) variant = models.ForeignKey("labs.ExamVariant", on_delete=models.CASCADE) language_code = models.CharField(max_length=4) started_at = models.DateTimeField(null=True, blank=True) submitted_at = models.DateTimeField(null=True, blank=True) expires_at = models.DateTimeField(null=True, blank=True) score = models.IntegerField(default=0) is_passed = models.BooleanField(default=False) status = models.IntegerField(choices=Status.choices, default=Status.IN_PROGRESS) result_detail = models.JSONField(default=dict) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: db_table = "exam_attempts" indexes = [ models.Index( fields=["submitted_at", "expires_at"], name="idx_ea_submitted_expires", ), ]