From a837ed0e4ba6e0d0bb039ca55d7b07cc9c6555c8 Mon Sep 17 00:00:00 2001 From: Ross Date: Sat, 11 Dec 2021 21:41:42 +0000 Subject: [PATCH] . --- physics/views.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/physics/views.py b/physics/views.py index 310c7ef4..a9bfb0a0 100644 --- a/physics/views.py +++ b/physics/views.py @@ -325,8 +325,10 @@ def exam_take(request, pk, sk, cid, passcode=None): if exam.valid_users.exists(): user = exam.valid_users.filter(cid=cid).first() - if not user or user.passcode != passcode: + if not user: raise Http404("Exam not found") + if user.passcode != passcode: + raise Http404("Invalid passcode") question = exam.exam_questions.all()[sk] @@ -348,15 +350,23 @@ def exam_take(request, pk, sk, cid, passcode=None): answer.exam = exam # answer.published_date = timezone.now() answer.save() + + kwargs = { + "pk": pk, + "cid" : cid + } + if passcode is None: + kwargs["passcode"] = passcode + if "next" in request.POST: - return redirect("physics:exam_take", pk=pk, sk=pos + 1, cid=cid) + return redirect("physics:exam_take", sk=pos + 1, **kwargs) elif "previous" in request.POST: - return redirect("physics:exam_take", pk=pk, sk=pos - 1, cid=cid) + return redirect("physics:exam_take", sk=pos - 1, **kwargs) elif "finish" in request.POST: - return redirect("physics:exam_finish", pk=pk, cid=cid) + return redirect("physics:exam_finish", **kwargs) elif "goto" in request.POST: return redirect( - "physics:exam_take", pk=pk, sk=int(request.POST.get("goto")), cid=cid + "physics:exam_take", sk=int(request.POST.get("goto")), **kwargs ) else: form = CidUserAnswerForm(instance=answer)