This commit is contained in:
Ross
2022-04-01 23:04:25 +01:00
parent 5b12226d7e
commit b8e6c914c0
3 changed files with 70 additions and 7 deletions
+44 -6
View File
@@ -47,6 +47,7 @@ from .models import (
Case,
CaseCollection,
CaseDetail,
CidReportAnswer,
Condition,
PathologicalProcess,
Presentation,
@@ -1055,12 +1056,49 @@ def collection_detail_view(request, pk):
request, "atlas/collection_detail_view.html", {"collection": collection}
)
#def collection_detail_view_take(request, pk, cid, passcode):
# collection = get_object_or_404(CaseCollection, pk=pk)
#
# return render(
# request, "atlas/collection_detail_view.html", {"collection": collection}
# )
def collection_take_overview(request, pk, cid, passcode):
collection = get_object_or_404(CaseCollection, pk=pk)
if not collection.active:
raise Http404("Exam not found")
if not collection.check_cid_user(cid, passcode):
raise Http404("Error accessing exam")
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
case_details = CaseDetail.objects.get(case__in=cases, collection=collection)
answers = CidReportAnswer.objects.filter(cid=cid, question__in=case_details)
answer_question_map = {}
for ans in answers:
answer_question_map[ans.question] = ans
question_answer_tuples = []
answer_count = 0
for q in cases:
if q in answer_question_map and answer_question_map[q].answer:
question_answer_tuples.append((q, answer_question_map[q]))
answer_count += 1
else:
question_answer_tuples.append((q, None))
c = CidUser.objects.filter(cid=cid).first()
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
return render(
request,
"sbas/exam_take_overview.html",
{
"collection": collection,
"cid": cid,
"question_answer_tuples": question_answer_tuples,
"answer_count": answer_count,
"collection_length": len(cases),
"passcode": passcode,
"cid_user_exam": cid_user_exam,
},
)
def collection_case_view_take(request, pk, case_number, cid, passcode):
return collection_case_view(request, pk, case_number, True, cid, passcode)