diff --git a/anatomy/models.py b/anatomy/models.py
index ef528a0b..9a7cdc67 100644
--- a/anatomy/models.py
+++ b/anatomy/models.py
@@ -157,8 +157,8 @@ class AnatomyQuestion(models.Model):
exams = ", ".join(e)
return exams
- def get_unmarked_answer_string(self):
- unmarked_answers = self.get_unmarked_answers()
+ def get_unmarked_answer_string(self, exam_pk=None):
+ unmarked_answers = self.get_unmarked_answers(exam_pk)
if not unmarked_answers:
return "No answers to mark"
@@ -168,16 +168,22 @@ class AnatomyQuestion(models.Model):
)
)
- def get_unmarked_answers(self):
- user_answers = set(
- [i.answer_compare for i in self.cid_user_answers.all()]
- )
+ def get_unmarked_answers(self, exam_pk=None):
+ if exam_pk is None:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.all()]
+ )
+ else:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.filter(exam__id=exam_pk)]
+ )
+
unmarked_answers = user_answers - self.get_marked_answers()
return unmarked_answers
- def get_unmarked_answer_count(self):
- return len(self.get_unmarked_answers())
+ def get_unmarked_answer_count(self, exam_pk=None):
+ return len(self.get_unmarked_answers(exam_pk))
def get_marked_answers(self):
return set(
diff --git a/anatomy/static/css/anatomy.css b/anatomy/static/css/anatomy.css
index a653bf86..b3b12bc5 100644
--- a/anatomy/static/css/anatomy.css
+++ b/anatomy/static/css/anatomy.css
@@ -708,4 +708,5 @@ input {
.sticky-alert {
position: sticky;
+ top: 5px;
}
\ No newline at end of file
diff --git a/anatomy/templates/anatomy/mark_overview.html b/anatomy/templates/anatomy/mark_overview.html
index 95afc5bd..ec2e41ba 100644
--- a/anatomy/templates/anatomy/mark_overview.html
+++ b/anatomy/templates/anatomy/mark_overview.html
@@ -11,9 +11,9 @@
diff --git a/generic/views.py b/generic/views.py
index e7c408dc..f1814ce1 100644
--- a/generic/views.py
+++ b/generic/views.py
@@ -367,9 +367,13 @@ class ExamViews(View, LoginRequiredMixin):
questions = exam.exam_questions.all()
+ question_unmarked_map = []
+ for q in questions:
+ question_unmarked_map.append((q, q.get_unmarked_answer_count()))
+
# TODO: fix showing unmarked answer count from other exams...
return render(
- request, "{}/mark_overview.html".format(self.app_name), {"exam": exam, "questions": questions}
+ request, "{}/mark_overview.html".format(self.app_name), {"exam": exam, "question_unmarked_map": question_unmarked_map}
)
@method_decorator(login_required)
diff --git a/longs/models.py b/longs/models.py
index db6295f7..7bf977ab 100644
--- a/longs/models.py
+++ b/longs/models.py
@@ -175,12 +175,20 @@ class Long(models.Model):
def get_image_url_array(self):
return json.dumps(["https://www.penracourses.org.uk{}".format(i.url) for i in self.get_images()])
- def get_unmarked_answer_count(self):
- answers = self.cid_user_answers.all()
+ def get_unmarked_answer_count(self, exam_pk=None):
+ if exam_pk is None:
+ answers = self.cid_user_answers.all()
+ else:
+ answers = self.cid_user_answers.filter(exam__id=exam_pk)
+
return len([ans for ans in answers if not ans.is_marked()])
- def get_unmarked_answers(self):
- answers = self.cid_user_answers.all()
+ def get_unmarked_answers(self, exam_pk=None):
+ if exam_pk is None:
+ answers = self.cid_user_answers.all()
+ else:
+ answers = self.cid_user_answers.filter(exam__id=exam_pk)
+
return [ans for ans in answers if not ans.is_marked()]
def get_question_json(self, based=True):
diff --git a/longs/templates/longs/mark_overview.html b/longs/templates/longs/mark_overview.html
index 609c63c4..cb89d79b 100644
--- a/longs/templates/longs/mark_overview.html
+++ b/longs/templates/longs/mark_overview.html
@@ -11,11 +11,11 @@
diff --git a/rapids/models.py b/rapids/models.py
index db9bbe00..cec0dc96 100644
--- a/rapids/models.py
+++ b/rapids/models.py
@@ -231,8 +231,8 @@ class Rapid(models.Model):
exams = ", ".join(e)
return exams
- def get_unmarked_answer_string(self):
- unmarked_answers = self.get_unmarked_answers()
+ def get_unmarked_answer_string(self, exam_pk=None):
+ unmarked_answers = self.get_unmarked_answers(exam_pk)
if not unmarked_answers:
return "No answers to mark"
@@ -242,25 +242,36 @@ class Rapid(models.Model):
)
)
- def get_unmarked_answers(self):
+ def get_unmarked_answers(self, exam_pk=None):
# If normal no answers to mark
if self.normal:
return []
- user_answers = set(
- [i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
- )
+ if exam_pk is None:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
+ )
+ else:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.filter(exam__id=exam_pk) if i.normal == False]
+ )
+
unmarked_answers = user_answers - self.get_marked_answers()
return unmarked_answers
- def get_unmarked_answer_count(self):
- return len(self.get_unmarked_answers())
+ def get_unmarked_answer_count(self, exam_pk=None):
+ return len(self.get_unmarked_answers(exam_pk))
- def get_user_answers(self):
- user_answers = set(
- [i.answer_compare for i in self.cid_user_answers.all()]
- )
+ def get_user_answers(self, exam_pk=None):
+ if exam_pk is None:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.all()]
+ )
+ else:
+ user_answers = set(
+ [i.answer_compare for i in self.cid_user_answers.filter(exam__id=exam_pk)]
+ )
return user_answers
diff --git a/rapids/templates/rapids/mark_overview.html b/rapids/templates/rapids/mark_overview.html
index f6bc4ed1..f1b02917 100644
--- a/rapids/templates/rapids/mark_overview.html
+++ b/rapids/templates/rapids/mark_overview.html
@@ -11,9 +11,9 @@