This commit is contained in:
2024-11-25 19:21:44 +01:00
parent 27b8c40c1c
commit 6ad9b46543
26 changed files with 260 additions and 338 deletions

View File

@@ -4,5 +4,4 @@ from .correction import Correction
from .given_answer import GivenAnswer
from .question import Question
from .quiz import Quiz
from .quiz_time import QuizTime
from .season import Season

View File

@@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _
from django_stubs_ext.db.models import TypedModelMeta
from .given_answer import GivenAnswer
from .question import NoActiveTestForSeason, QuizAlreadyFinished, Question
from .question import NoActiveTestForSeason, Question, QuizAlreadyFinished
class Candidate(models.Model):
@@ -23,11 +23,13 @@ class Candidate(models.Model):
raise NoActiveTestForSeason()
question = (
Question.objects.filter(quiz=quiz)
Question.objects.filter(quiz=quiz, enabled=True)
.exclude(
id__in=GivenAnswer.objects.filter(
candidate=candidate, question__quiz=quiz
).values_list("question_id", flat=True)
candidate=candidate,
quiz=quiz,
answer__isnull=False,
).values_list("answer__question_id", flat=True)
)
.first()
)

View File

@@ -2,9 +2,6 @@ from django.db import models
from django.utils.translation import gettext_lazy as _
from django_stubs_ext.db.models import TypedModelMeta
from .candidate import Candidate
from .quiz import Quiz
class Correction(models.Model):
candidate = models.ForeignKey(

View File

@@ -10,20 +10,28 @@ class GivenAnswer(models.Model):
related_name="answers",
verbose_name=_("candidate"),
)
question = models.ForeignKey(
"Question",
quiz = models.ForeignKey(
"Quiz",
on_delete=models.CASCADE,
null=True,
related_name="given_answers",
verbose_name=_("question"),
null=False,
related_name="+",
verbose_name=_("quiz"),
)
answer = models.ForeignKey(
"Answer", on_delete=models.CASCADE, verbose_name=_("answer")
"Answer",
on_delete=models.CASCADE,
verbose_name=_("answer"),
null=True,
)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.quiz} - {self.candidate.name} {self.answer}"
class Meta(TypedModelMeta):
unique_together = ["candidate", "question"]
ordering = ("quiz", "candidate")
verbose_name = _("given answer")
verbose_name_plural = _("given answers")

View File

@@ -1,15 +0,0 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from django_stubs_ext.db.models import TypedModelMeta
class QuizTime(models.Model):
candidate = models.ForeignKey(
"Candidate", on_delete=models.CASCADE, verbose_name=_("candidate")
)
quiz = models.ForeignKey("Quiz", on_delete=models.CASCADE, verbose_name=_("quiz"))
seconds = models.PositiveIntegerField(verbose_name=_("seconds"))
class Meta(TypedModelMeta):
verbose_name = _("quiz time")
verbose_name_plural = _("quiz times")