diff --git a/anatomy/templates/anatomy/mark.html b/anatomy/templates/anatomy/mark.html
index 0b35e6cb..16c2ddf4 100644
--- a/anatomy/templates/anatomy/mark.html
+++ b/anatomy/templates/anatomy/mark.html
@@ -21,19 +21,19 @@
Unmarked:
{% for answer in user_answers %}
- {{ answer }}
+ {{ answer }}
{% endfor %}
Marked:
{% for answer in correct_answers %}
- {{ answer }}
+ {{ answer }}
{% endfor %}
{% for answer in half_mark_answers %}
- {{ answer }}
+ {{ answer }}
{% endfor %}
{% for answer in incorrect_answers %}
- {{ answer }}
+ {{ answer }}
{% endfor %}
@@ -78,6 +78,7 @@
`)
$(el).before(popover)
diff --git a/anatomy/templates/anatomy/question_user_answers.html b/anatomy/templates/anatomy/question_user_answers.html
index a72b5d80..4a4acac1 100644
--- a/anatomy/templates/anatomy/question_user_answers.html
+++ b/anatomy/templates/anatomy/question_user_answers.html
@@ -1,6 +1,12 @@
{% extends 'anatomy/base.html' %}
{% block content %}
+{{question}}
+
+{% if answer_compare %}
+ Filtering by answer: {{answer_compare}} [view all]
+{% endif %}
+
{% for answer in answers %}
- {{answer}} [score: {{answer.score}}]
diff --git a/anatomy/views.py b/anatomy/views.py
index 5d48ebeb..d8deb41a 100644
--- a/anatomy/views.py
+++ b/anatomy/views.py
@@ -258,7 +258,7 @@ def mark(request, exam_pk, sk, unmarked_exam_answers_only=True, review=False):
}
try:
- question = questions[sk]
+ question: AnatomyQuestion = questions[sk]
except IndexError:
raise Http404("Exam question does not exist")
diff --git a/generic/urls.py b/generic/urls.py
index 427990be..47a758a1 100755
--- a/generic/urls.py
+++ b/generic/urls.py
@@ -2,7 +2,7 @@ from django.urls import path, include
from generic.models import Examination
from . import views
-from generic.views import ExamViews as GenericExamViews
+from generic.views import ExamViews as GenericExamViews, GenericViewBase
app_name = "generic"
@@ -147,7 +147,7 @@ urlpatterns = [
]
-def generic_view_urls(generic_views):
+def generic_view_urls(generic_views: GenericViewBase):
urlpatterns = [
path(
"user_answers/delete",
@@ -164,6 +164,11 @@ def generic_view_urls(generic_views):
generic_views.question_user_answers,
name="question_user_answers",
),
+ path(
+ "question//user_answers//str",
+ generic_views.question_user_answers_by_compare,
+ name="question_user_answers_by_compare",
+ ),
path(
"exam//review",
generic_views.question_review,
diff --git a/generic/views.py b/generic/views.py
index f684617e..1f5d3e0f 100644
--- a/generic/views.py
+++ b/generic/views.py
@@ -2322,16 +2322,27 @@ class GenericViewBase:
{"question": question, "view_feedback": view_feedback},
)
+ # TODO: improve permissions on these
@method_decorator(login_required)
- def question_user_answers(self, request, pk):
+ def question_user_answers_by_compare(self, request, pk, answer_compare):
+ print(answer_compare)
+ return self.question_user_answers(request, pk, answer_compare)
+
+ @method_decorator(login_required)
+ def question_user_answers(self, request, pk, answer_compare=None):
+ print(locals())
question = get_object_or_404(self.question_object, pk=pk)
- answers = self.cid_user_answer_object.objects.filter(question__id=question.pk).prefetch_related("question", "exam", "user")
+ if answer_compare is None:
+ answers = self.cid_user_answer_object.objects.filter(question__id=question.pk).prefetch_related("question", "exam", "user")
+ else:
+ answers = self.cid_user_answer_object.objects.filter(question__id=question.pk, answer_compare=answer_compare).prefetch_related("question", "exam", "user")
+
return render(
request,
f"{self.app_name}/question_user_answers.html",
- {"question": question, "answers": answers},
+ {"question": question, "answers": answers, "answer_compare": answer_compare},
)
@method_decorator(login_required)