.
This commit is contained in:
+77
-51
@@ -1275,13 +1275,6 @@ def collection_take_overview(request, pk, cid, passcode):
|
||||
|
||||
|
||||
def collection_case_view_take(request, pk, case_number, cid, passcode):
|
||||
return collection_case_view_base(request, pk, case_number, True, cid, passcode)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_view(request, pk, case_number, take=False, cid=None, passcode=None):
|
||||
return collection_case_view_base(request, pk, case_number, take=False, cid=None, passcode=None)
|
||||
|
||||
def collection_case_view_base(request, pk, case_number, take=False, cid=None, passcode=None):
|
||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||
|
||||
form = None
|
||||
@@ -1291,58 +1284,57 @@ def collection_case_view_base(request, pk, case_number, take=False, cid=None, pa
|
||||
if not collection.active:
|
||||
raise Http404("Exam not found")
|
||||
|
||||
if take and not collection.check_cid_user(cid, passcode, request):
|
||||
if not collection.check_cid_user(cid, passcode, request):
|
||||
raise Http404("Error accessing exam")
|
||||
|
||||
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
||||
case = cases[case_number]
|
||||
|
||||
if take:
|
||||
c = CidUser.objects.filter(cid=cid).first()
|
||||
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
|
||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||
answer = case_detail.cidreportanswer_set.filter(cid=cid).first()
|
||||
c = CidUser.objects.filter(cid=cid).first()
|
||||
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
|
||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||
answer = case_detail.cidreportanswer_set.filter(cid=cid).first()
|
||||
|
||||
if request.method == "POST":
|
||||
if not collection.publish_results:
|
||||
if answer:
|
||||
form = CidReportAnswerForm(request.POST, instance=answer)
|
||||
else:
|
||||
form = CidReportAnswerForm(request.POST)
|
||||
if form.is_valid():
|
||||
answer = form.save(commit=False)
|
||||
answer.cid = cid
|
||||
answer.question = case_detail
|
||||
# answer.published_date = timezone.now()
|
||||
answer.save()
|
||||
if request.method == "POST":
|
||||
if not collection.publish_results:
|
||||
if answer:
|
||||
form = CidReportAnswerForm(request.POST, instance=answer)
|
||||
else:
|
||||
form = CidReportAnswerForm(request.POST)
|
||||
if form.is_valid():
|
||||
answer = form.save(commit=False)
|
||||
answer.cid = cid
|
||||
answer.question = case_detail
|
||||
# answer.published_date = timezone.now()
|
||||
answer.save()
|
||||
|
||||
cid_user_exam.end_time = timezone.now()
|
||||
cid_user_exam.save()
|
||||
cid_user_exam.end_time = timezone.now()
|
||||
cid_user_exam.save()
|
||||
|
||||
kwargs = {"pk": pk, "cid": cid, "passcode": passcode}
|
||||
kwargs = {"pk": pk, "cid": cid, "passcode": passcode}
|
||||
|
||||
if "next" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=case_number + 1,
|
||||
**kwargs
|
||||
)
|
||||
elif "previous" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=case_number - 1,
|
||||
**kwargs
|
||||
)
|
||||
elif "finish" in request.POST:
|
||||
return redirect("atlas:collection_take_overview", **kwargs)
|
||||
elif "goto" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=int(request.POST.get("goto")),
|
||||
**kwargs
|
||||
)
|
||||
else:
|
||||
form = CidReportAnswerForm(instance=answer)
|
||||
if "next" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=case_number + 1,
|
||||
**kwargs
|
||||
)
|
||||
elif "previous" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=case_number - 1,
|
||||
**kwargs
|
||||
)
|
||||
elif "finish" in request.POST:
|
||||
return redirect("atlas:collection_take_overview", **kwargs)
|
||||
elif "goto" in request.POST:
|
||||
return redirect(
|
||||
"atlas:collection_case_view_take",
|
||||
case_number=int(request.POST.get("goto")),
|
||||
**kwargs
|
||||
)
|
||||
else:
|
||||
form = CidReportAnswerForm(instance=answer)
|
||||
|
||||
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||
|
||||
@@ -1360,9 +1352,43 @@ def collection_case_view_base(request, pk, case_number, take=False, cid=None, pa
|
||||
"case_number": case_number,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
"take": take,
|
||||
"cid": cid,
|
||||
"passcode": passcode,
|
||||
"answer": answer,
|
||||
},
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_view(request, pk, case_number):
|
||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||
|
||||
form = None
|
||||
answer = None
|
||||
|
||||
if collection.collection_type != collection.COLLECTION_TYPE_CHOICES.REVIEW:
|
||||
if not collection.active:
|
||||
raise Http404("Exam not found")
|
||||
|
||||
|
||||
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
||||
case = cases[case_number]
|
||||
|
||||
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||
|
||||
previous = case_number > 0
|
||||
next = case_number < (len(cases) - 1)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_view.html",
|
||||
{
|
||||
"form": form,
|
||||
"collection": collection,
|
||||
"case": case,
|
||||
"series_list": series_list,
|
||||
"case_number": case_number,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
"answer": answer,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user