- Exam is in review mode. Add question feedback
here.
+ {% if exam.publish_results %}
+
+ Exam is in review mode. Score are available
+ {% if request.user.is_authenticated %}
+
here
+
+ {% else %}
+
here
+ {% endif %}
- {% endif %} {% endcomment %}
+ {% endif %}
{{answer_count}} out of {{exam_length}} questions answered. Click to go to question.
diff --git a/rad/test_helpers.py b/rad/test_helpers.py
index ed8f024d..6983e477 100644
--- a/rad/test_helpers.py
+++ b/rad/test_helpers.py
@@ -73,7 +73,12 @@ class ExamTester:
self.exam = exam = create_exam(db, ExamViews)
cidgroup1: CidUserGroup = CidUserGroup.objects.get(name="Group1")
- assert exam in cidgroup1.physics_cid_user_groups.all()
+
+ match app_name:
+ case "physics":
+ assert exam in cidgroup1.physics_cid_user_groups.all()
+ case "sbas":
+ assert exam in cidgroup1.sba_cid_user_groups.all()
cid_user_1001 = CidUser.objects.get(cid=1001)
cid_user_1000 = CidUser.objects.get(cid=1000)
@@ -200,11 +205,16 @@ class ExamTester:
== question.stem
)
- assert cid_take_soup.find("label", {"for": "id_a"}).string == question.a
- assert cid_take_soup.find("label", {"for": "id_b"}).string == question.b
- assert cid_take_soup.find("label", {"for": "id_c"}).string == question.c
- assert cid_take_soup.find("label", {"for": "id_d"}).string == question.d
- assert cid_take_soup.find("label", {"for": "id_e"}).string == question.e
+ match self.app_name:
+ case "physics":
+ assert cid_take_soup.find("label", {"for": "id_a"}).string == question.a
+ assert cid_take_soup.find("label", {"for": "id_b"}).string == question.b
+ assert cid_take_soup.find("label", {"for": "id_c"}).string == question.c
+ assert cid_take_soup.find("label", {"for": "id_d"}).string == question.d
+ assert cid_take_soup.find("label", {"for": "id_e"}).string == question.e
+ case "sbas":
+ assert cid_take_soup.find("ul", {"class": "sba-answer-list"}) is not None
+ assert len(cid_take_soup.find("ul", {"class": "sba-answer-list"}).find_all("li")) == 5
# As we haven't submitted any answers they should all be blank
assert (
@@ -379,17 +389,27 @@ class ExamTester:
alert = cid_exam_scores_soup.find("div", {"class": "alert"})
assert "Results are not currently published." in str(alert)
- # Check that we are showing enough questions / answers
- answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
- assert len(answer_lis) == 5 * len(self.generated_questions)
-
submitted_answers = cid_exam_scores_soup.find_all(
"span", {"class": "submitted-user-answer"}
)
- assert len(submitted_answers) == 5 * len(self.generated_questions)
- for ans in submitted_answers:
- assert ans.text.strip() == "True"
+ # Check that we are showing enough questions / answers
+ match self.app_name:
+ case "physics":
+ answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
+ assert len(answer_lis) == 5 * len(self.generated_questions)
+ assert len(submitted_answers) == 5 * len(self.generated_questions)
+ for ans in submitted_answers:
+ assert ans.text.strip() == "True"
+
+ case "sbas":
+ answer_lis = cid_exam_scores_soup.find_all("li", {"class": "user-answer-li"})
+ assert len(answer_lis) == len(self.generated_questions)
+ assert len(submitted_answers) == len(self.generated_questions)
+
+
+ for ans in submitted_answers:
+ assert ans.text.strip() == "a"
# Check no correct answers are shown
assert not cid_exam_scores_soup.find_all("span", {"class": "correct-answer"})
@@ -401,20 +421,39 @@ class ExamTester:
cid_exam_scores_res = self.client.get(exam_scores_url)
cid_exam_scores_soup = BeautifulSoup(cid_exam_scores_res.content, "html.parser")
- answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
- assert len(answer_lis) == 5 * len(self.generated_questions)
-
submitted_answers = cid_exam_scores_soup.find_all(
"span", {"class": "submitted-user-answer"}
)
- assert len(submitted_answers) == 5 * len(self.generated_questions)
+ match self.app_name:
+ case "physics":
+ answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
+ assert len(answer_lis) == 5 * len(self.generated_questions)
+ assert len(submitted_answers) == 5 * len(self.generated_questions)
+
+ for ans in submitted_answers[:-5]:
+ assert ans.text.strip() == "True"
+
+ # The new question will not have any answers
+ for ans in submitted_answers[-5:]:
+ assert ans.text.strip() == ""
+
+ case "sbas":
+ answer_lis = cid_exam_scores_soup.find_all("li", {"class": "user-answer-li"})
+ assert len(answer_lis) == len(self.generated_questions)
+ assert len(submitted_answers) == len(self.generated_questions)
+
+ print(submitted_answers)
+
+ for ans in submitted_answers[:3]:
+ print("test1", ans)
+ assert ans.text.strip() == "a"
+
+ # The new question will not have any answers
+ for ans in submitted_answers[3:]:
+ print("test2", ans)
+ assert ans.text.strip() == ""
- for ans in submitted_answers[:-5]:
- assert ans.text.strip() == "True"
- # The new question will not have any answers
- for ans in submitted_answers[-5:]:
- assert ans.text.strip() == ""
# Publish the results!
self.exam.publish_results = True
diff --git a/sbas/templates/sbas/exam_scores_user.html b/sbas/templates/sbas/exam_scores_user.html
index c99b576b..7840ec59 100644
--- a/sbas/templates/sbas/exam_scores_user.html
+++ b/sbas/templates/sbas/exam_scores_user.html
@@ -5,14 +5,29 @@
{% include 'user_score_header.html' %}
{% for question, a, score, correct_answer, chosen_answer in answers_and_marks %}
- - Question
- {{forloop.counter}} - {{ question.stem |safe}}
- Correct answer: {{correct_answer|safe}}
Chosen answer: {{a}} {{chosen_answer|safe}}
- {% if exam.publish_results or view_all_results %}
- (Score: {{score}})
+ -
+ {% if request.user.is_authenticated %}
+
+ Question {{forloop.counter}}
+
+ {% else %}
+
+ Question {{forloop.counter}}
+
{% endif %}
-
-
+ - {{ question.stem |safe}}
+ {% if exam.publish_results %}
+ Correct answer: {{correct_answer|safe}}
+ {% endif %}
+
+ {{a}}
+ Chosen answer: {{chosen_answer|safe}}
+ {% if exam.publish_results or view_all_results %}
+ (Score: {{score}})
+ {% endif %}
+
+
+
{% endfor %}
{% include 'user_scores_footer.html' %}
diff --git a/sbas/templates/sbas/exam_take.html b/sbas/templates/sbas/exam_take.html
index 6d9db8ea..b4d40603 100755
--- a/sbas/templates/sbas/exam_take.html
+++ b/sbas/templates/sbas/exam_take.html
@@ -1,11 +1,13 @@
{% extends 'base.html' %}
{% block content %}
+
{% if request.user.is_authenticated %}
User: {{request.user}}
{% else %}
CID: {{cid}}
{% endif %}
+
Allocated time over.
@@ -29,15 +31,15 @@