This commit is contained in:
Ross
2022-03-30 20:37:21 +01:00
parent cc96136e8c
commit aa6b41ab1c
2 changed files with 47 additions and 16 deletions
+20 -5
View File
@@ -429,8 +429,7 @@ class ExamViews(View, LoginRequiredMixin):
# exam.get_exam_json()
# TODO: check if mememory leak?
t = threading.Thread(target=self.exam_json,
args=(request, pk))
t = threading.Thread(target=self.exam_json, args=(request, pk))
t.setDaemon(True)
t.start()
@@ -520,10 +519,26 @@ class ExamViews(View, LoginRequiredMixin):
)
elif self.app_name == "rapids":
questions = (
exam.exam_questions.select_related()
.all()
.prefetch_related("images", "abnormality", "region", "examination")
exam.exam_questions.select_related(
"images", "abnormality", "region", "examination"
)
.all()
.prefetch_related(
Prefetch(
"answers",
queryset=self.Answer.objects.filter(
proposed=False, status=self.Answer.MarkOptions.CORRECT
),
to_attr="prefetched_primary_answer"
# queryset=self.Answer.objects.filter(),
),
)
)
# questions = (
# exam.exam_questions.select_related()
# .all()
# .prefetch_related("images", "abnormality", "region", "examination")
# )
elif self.app_name == "physics":
questions = (
exam.exam_questions.select_related("category").all()
+27 -11
View File
@@ -237,19 +237,35 @@ class Rapid(models.Model):
def get_primary_answer(self):
if self.normal:
return "Normal"
elif (
self.answers.filter(
proposed=False, status=Answer.MarkOptions.CORRECT
).count()
> 0
):
return (
self.answers.filter(proposed=False, status=Answer.MarkOptions.CORRECT)
.first()
.answer
)
else:
if hasattr(self, "prefetched_primary_answer") and self.prefetched_primary_answer:
ans = self.prefetched_primary_answer[0]
else:
ans = self.answers.filter(
proposed=False, status=Answer.MarkOptions.CORRECT
).first()
if ans is None:
return "None yet..."
else:
return ans.answer
#def get_primary_answer(self):
# if self.normal:
# return "Normal"
# elif (
# self.answers.filter(
# proposed=False, status=Answer.MarkOptions.CORRECT
# ).count()
# > 0
# ):
# return (
# self.answers.filter(proposed=False, status=Answer.MarkOptions.CORRECT)
# .first()
# .answer
# )
# else:
# return "None yet..."
def get_exams(self):
e = self.exams.all().values_list("name", flat=True)