diff --git a/sbas/templates/sbas/exam_finish.html b/sbas/templates/sbas/exam_finish.html new file mode 100644 index 00000000..81224611 --- /dev/null +++ b/sbas/templates/sbas/exam_finish.html @@ -0,0 +1,28 @@ +{% extends 'base.html' %} + +{% block content %} +CID: {{cid}} + +

Exam: {{exam.name}}

+ +

Questions

+ + +{% endblock %} + +{% block js %} + +{% endblock %} +{% block css %} + +{% endblock %} \ No newline at end of file diff --git a/sbas/templates/sbas/exam_take.html b/sbas/templates/sbas/exam_take.html index d66e888c..b1f142df 100755 --- a/sbas/templates/sbas/exam_take.html +++ b/sbas/templates/sbas/exam_take.html @@ -31,6 +31,8 @@ CID: {{cid}} {% else %} {% endif %} +
+ diff --git a/sbas/urls.py b/sbas/urls.py index 34368e5e..dfd487a3 100644 --- a/sbas/urls.py +++ b/sbas/urls.py @@ -14,6 +14,7 @@ urlpatterns = [ #path("exam//mark", views.mark_overview, name="mark_overview"), path("exam////take", views.exam_take, name="exam_take"), path("exam//start", views.exam_start, name="exam_start"), + path("exam///finish", views.exam_finish, name="exam_finish"), path("exam//", views.SbasExamViews.exam_overview, name="exam_overview"), path("exam//scores", views.exam_scores_cid, name="exam_scores_cid"), diff --git a/sbas/views.py b/sbas/views.py index d114250c..92b88040 100644 --- a/sbas/views.py +++ b/sbas/views.py @@ -236,6 +236,37 @@ def exam_start(request, pk): }, ) +def exam_finish(request, pk, cid): + exam = get_object_or_404(Exam, pk=pk) + + questions = exam.exam_questions.all() + + answers = CidUserAnswer.object.filter( + cid=cid, exam=exam) + + answer_question_map = {} + for ans in answers: + answer_question_map[ans.question] = ans + + question_answer_tuples = [] + for q in questions: + if q in answer_question_map: + question_answer_tuples.append(q, answer_question_map[q]) + else: + question_answer_tuples.append(q, None) + + if not exam.active: + raise Http404("Exam not found") + + return render( + request, + "sbas/exam_finish.html", + { + "exam": exam, + "question_answer_tuples": question_answer_tuples + }, + ) + def exam_take(request, pk, sk, cid): @@ -269,6 +300,8 @@ def exam_take(request, pk, sk, cid): return redirect("sbas:exam_take", pk=pk, sk=pos, cid=cid) elif "previous" in request.POST: return redirect("sbas:exam_take", pk=pk, sk=pos - 2, cid=cid) + elif "finish" in request.POST: + return redirect("sbas:exam_finish", pk=pk, cid=cid) else: form = CidUserAnswerForm(instance=answer)