.
This commit is contained in:
+19
-5
@@ -1,3 +1,6 @@
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.utils import timezone
|
||||
from generic.models import CidUser
|
||||
from physics.decorators import user_is_author_or_physics_checker
|
||||
from physics.filters import QuestionFilter, UserAnswerFilter
|
||||
from generic.mixins import SuperuserRequiredMixin
|
||||
@@ -178,9 +181,12 @@ def exam_start(request, pk):
|
||||
)
|
||||
|
||||
|
||||
def exam_finish(request, pk, cid, passcode):
|
||||
def exam_take_overview(request, pk, cid, passcode):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
if not exam.active:
|
||||
raise Http404("Exam not found")
|
||||
|
||||
if not exam.check_cid_user(cid, passcode):
|
||||
raise Http404("Error accessing exam")
|
||||
|
||||
@@ -202,12 +208,12 @@ def exam_finish(request, pk, cid, passcode):
|
||||
else:
|
||||
question_answer_tuples.append((q, None))
|
||||
|
||||
if not exam.active:
|
||||
raise Http404("Exam not found")
|
||||
c = CidUser.objects.filter(cid=cid).first()
|
||||
cid_user_exam = exam.get_or_create_cid_user_exam(cid_user=c)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"physics/exam_finish.html",
|
||||
"physics/exam_take_overview.html",
|
||||
{
|
||||
"exam": exam,
|
||||
"cid": cid,
|
||||
@@ -215,6 +221,7 @@ def exam_finish(request, pk, cid, passcode):
|
||||
"answer_count": answer_count,
|
||||
"exam_length": len(questions),
|
||||
"passcode": passcode,
|
||||
"cid_user_exam": cid_user_exam,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -229,6 +236,9 @@ def exam_take(request, pk, sk, cid, passcode):
|
||||
if not exam.check_cid_user(cid, passcode):
|
||||
raise Http404("Error accessing exam")
|
||||
|
||||
c = CidUser.objects.filter(cid=cid).first()
|
||||
cid_user_exam = exam.get_or_create_cid_user_exam(cid_user=c)
|
||||
|
||||
question = exam.exam_questions.all()[sk]
|
||||
|
||||
exam_length = len(exam.exam_questions.all())
|
||||
@@ -250,9 +260,12 @@ def exam_take(request, pk, sk, cid, passcode):
|
||||
# answer.published_date = timezone.now()
|
||||
answer.save()
|
||||
|
||||
cid_user_exam.end_time = timezone.now()
|
||||
cid_user_exam.save()
|
||||
|
||||
kwargs = {"pk": pk, "cid": cid, "passcode": passcode}
|
||||
take_url = "physics:exam_take"
|
||||
finish_url = "physics:exam_finish"
|
||||
finish_url = "physics:exam_take_overview"
|
||||
|
||||
if "next" in request.POST:
|
||||
return redirect(take_url, sk=pos + 1, **kwargs)
|
||||
@@ -289,6 +302,7 @@ def exam_take(request, pk, sk, cid, passcode):
|
||||
"exam_length": exam_length,
|
||||
"pos": pos,
|
||||
"passcode": passcode,
|
||||
"cid_user_exam": cid_user_exam,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user