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}}
+
+
+
+{% for question, answer in question_answer_tuples %}
+ - {{forloop.counter}}: answer.answer
+{% endfor %}
+
+
+{% 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)