.
This commit is contained in:
+30
-14
@@ -231,8 +231,8 @@ class Rapid(models.Model):
|
||||
exams = ", ".join(e)
|
||||
return exams
|
||||
|
||||
def get_unmarked_answer_string(self, exam_pk=None):
|
||||
unmarked_answers = self.get_unmarked_answers(exam_pk)
|
||||
def get_unmarked_user_answer_string(self, exam_pk=None):
|
||||
unmarked_answers = self.get_unmarked_user_answers(exam_pk)
|
||||
|
||||
if not unmarked_answers:
|
||||
return "No answers to mark"
|
||||
@@ -242,26 +242,40 @@ class Rapid(models.Model):
|
||||
)
|
||||
)
|
||||
|
||||
def get_unmarked_answers(self, exam_pk=None):
|
||||
# If normal no answers to mark
|
||||
def get_unmarked_user_answers(self, exam_pk=None, marker=None):
|
||||
# If normal no answers to mark (they will be automarked)
|
||||
if self.normal:
|
||||
return []
|
||||
|
||||
if exam_pk is None:
|
||||
user_answers = set(
|
||||
[i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
|
||||
)
|
||||
user_answer_queryset = self.cid_user_answers.all()
|
||||
else:
|
||||
user_answers = set(
|
||||
[i.answer_compare for i in self.cid_user_answers.filter(exam__id=exam_pk) if i.normal == False]
|
||||
)
|
||||
user_answer_queryset = self.cid_user_answers.filter(exam__id=exam_pk)
|
||||
|
||||
unmarked_answers = user_answers - self.get_marked_answers()
|
||||
marked_answers = self.get_marked_answers()
|
||||
|
||||
return unmarked_answers
|
||||
unmarked_answers = set(
|
||||
[i for i in user_answer_queryset if i.normal == False and i not in marked_answers]
|
||||
)
|
||||
|
||||
def get_unmarked_answer_count(self, exam_pk=None):
|
||||
return len(self.get_unmarked_answers(exam_pk))
|
||||
#unmarked_answers = user_answers - self.get_marked_answers()
|
||||
|
||||
if marker is None:
|
||||
return [i.answer_compare for i in unmarked_answers]
|
||||
|
||||
# If marker is specified we check for what they have marked
|
||||
marker_unmarked = []
|
||||
for answer in unmarked_answers:
|
||||
if answer.mark.filter(marker=marker).count() < 1:
|
||||
marker_unmarked.append(answer)
|
||||
|
||||
return marker_unmarked
|
||||
|
||||
def get_unmarked_user_answer_count(self, exam_pk=None, marker=None):
|
||||
if exam_pk is None:
|
||||
return self.cid_user_answers.all().count()
|
||||
|
||||
return len(self.get_unmarked_user_answers(exam_pk, marker=marker))
|
||||
|
||||
def get_user_answers(self, exam_pk=None):
|
||||
if exam_pk is None:
|
||||
@@ -459,6 +473,8 @@ class Exam(ExamBase):
|
||||
help_text='Author of exam',
|
||||
related_name="rapid_exam_author")
|
||||
|
||||
double_mark = models.BooleanField(default=False, help_text="If the exam requires double marking")
|
||||
|
||||
|
||||
def get_normal_abnormal_breakdown(self):
|
||||
# Inefficient but more extendible
|
||||
|
||||
Reference in New Issue
Block a user