.
This commit is contained in:
+14
-8
@@ -157,8 +157,8 @@ class AnatomyQuestion(models.Model):
|
|||||||
exams = ", ".join(e)
|
exams = ", ".join(e)
|
||||||
return exams
|
return exams
|
||||||
|
|
||||||
def get_unmarked_answer_string(self):
|
def get_unmarked_answer_string(self, exam_pk=None):
|
||||||
unmarked_answers = self.get_unmarked_answers()
|
unmarked_answers = self.get_unmarked_answers(exam_pk)
|
||||||
|
|
||||||
if not unmarked_answers:
|
if not unmarked_answers:
|
||||||
return "No answers to mark"
|
return "No answers to mark"
|
||||||
@@ -168,16 +168,22 @@ class AnatomyQuestion(models.Model):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_unmarked_answers(self):
|
def get_unmarked_answers(self, exam_pk=None):
|
||||||
user_answers = set(
|
if exam_pk is None:
|
||||||
[i.answer_compare for i in self.cid_user_answers.all()]
|
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()
|
unmarked_answers = user_answers - self.get_marked_answers()
|
||||||
|
|
||||||
return unmarked_answers
|
return unmarked_answers
|
||||||
|
|
||||||
def get_unmarked_answer_count(self):
|
def get_unmarked_answer_count(self, exam_pk=None):
|
||||||
return len(self.get_unmarked_answers())
|
return len(self.get_unmarked_answers(exam_pk))
|
||||||
|
|
||||||
def get_marked_answers(self):
|
def get_marked_answers(self):
|
||||||
return set(
|
return set(
|
||||||
|
|||||||
@@ -708,4 +708,5 @@ input {
|
|||||||
|
|
||||||
.sticky-alert {
|
.sticky-alert {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
|
top: 5px;
|
||||||
}
|
}
|
||||||
@@ -11,9 +11,9 @@
|
|||||||
<div id="stark-marking-button"><a href="{% url 'anatomy:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
<div id="stark-marking-button"><a href="{% url 'anatomy:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question, unmarked_count in question_unmarked_map %}
|
||||||
<li data-markcount={{question.get_unmarked_answer_count}}><a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
<li data-markcount={{unmarked_count}}><a href="{% url 'anatomy:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
||||||
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
|
{{ question }}</a><br /> {{ unmarked_count }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+5
-1
@@ -367,9 +367,13 @@ class ExamViews(View, LoginRequiredMixin):
|
|||||||
|
|
||||||
questions = exam.exam_questions.all()
|
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...
|
# TODO: fix showing unmarked answer count from other exams...
|
||||||
return render(
|
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)
|
@method_decorator(login_required)
|
||||||
|
|||||||
+12
-4
@@ -175,12 +175,20 @@ class Long(models.Model):
|
|||||||
def get_image_url_array(self):
|
def get_image_url_array(self):
|
||||||
return json.dumps(["https://www.penracourses.org.uk{}".format(i.url) for i in self.get_images()])
|
return json.dumps(["https://www.penracourses.org.uk{}".format(i.url) for i in self.get_images()])
|
||||||
|
|
||||||
def get_unmarked_answer_count(self):
|
def get_unmarked_answer_count(self, exam_pk=None):
|
||||||
answers = self.cid_user_answers.all()
|
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()])
|
return len([ans for ans in answers if not ans.is_marked()])
|
||||||
|
|
||||||
def get_unmarked_answers(self):
|
def get_unmarked_answers(self, exam_pk=None):
|
||||||
answers = self.cid_user_answers.all()
|
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()]
|
return [ans for ans in answers if not ans.is_marked()]
|
||||||
|
|
||||||
def get_question_json(self, based=True):
|
def get_question_json(self, based=True):
|
||||||
|
|||||||
@@ -11,11 +11,11 @@
|
|||||||
<div id="stark-marking-button"><a href="{% url 'longs:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
<div id="stark-marking-button"><a href="{% url 'longs:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question, unmarked_count in question_unmarked_map %}
|
||||||
<li data-markcount={{question.get_unmarked_answer_count}}
|
<li data-markcount={{unmarked_count}}
|
||||||
{% if question.get_unmarked_answer_count %}class="unmarked" {% endif %}
|
{% if unmarked_count %}class="unmarked" {% endif %}
|
||||||
><a href="{% url 'longs:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
><a href="{% url 'longs:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
||||||
{{ question }}</a><br /> Answers to mark: {{question.get_unmarked_answer_count}}</li>
|
{{ question }}</a><br /> Answers to mark: {{unmarked_count}}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+23
-12
@@ -231,8 +231,8 @@ class Rapid(models.Model):
|
|||||||
exams = ", ".join(e)
|
exams = ", ".join(e)
|
||||||
return exams
|
return exams
|
||||||
|
|
||||||
def get_unmarked_answer_string(self):
|
def get_unmarked_answer_string(self, exam_pk=None):
|
||||||
unmarked_answers = self.get_unmarked_answers()
|
unmarked_answers = self.get_unmarked_answers(exam_pk)
|
||||||
|
|
||||||
if not unmarked_answers:
|
if not unmarked_answers:
|
||||||
return "No answers to mark"
|
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 normal no answers to mark
|
||||||
if self.normal:
|
if self.normal:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
user_answers = set(
|
if exam_pk is None:
|
||||||
[i.answer_compare for i in self.cid_user_answers.all() if i.normal == False]
|
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()
|
unmarked_answers = user_answers - self.get_marked_answers()
|
||||||
|
|
||||||
return unmarked_answers
|
return unmarked_answers
|
||||||
|
|
||||||
def get_unmarked_answer_count(self):
|
def get_unmarked_answer_count(self, exam_pk=None):
|
||||||
return len(self.get_unmarked_answers())
|
return len(self.get_unmarked_answers(exam_pk))
|
||||||
|
|
||||||
def get_user_answers(self):
|
def get_user_answers(self, exam_pk=None):
|
||||||
user_answers = set(
|
if exam_pk is None:
|
||||||
[i.answer_compare for i in self.cid_user_answers.all()]
|
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
|
return user_answers
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@
|
|||||||
<div id="stark-marking-button"><a href="{% url 'rapids:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
<div id="stark-marking-button"><a href="{% url 'rapids:mark' pk=exam.pk sk=0 %}"><button>Click here to start marking</button></a></div>
|
||||||
|
|
||||||
<ul id="question-mark-list">
|
<ul id="question-mark-list">
|
||||||
{% for question in questions.all %}
|
{% for question, unmarked_count in question_unmarked_map %}
|
||||||
<li data-markcount={{question.get_unmarked_answer_count}}><a href="{% url 'rapids:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
<li data-markcount={{unmarked_count}}><a href="{% url 'rapids:mark' pk=exam.pk sk=forloop.counter0 %}">Question {{forloop.counter }}:
|
||||||
{{ question }}</a><br /> {{ question.get_unmarked_answer_string }}</li>
|
{{ question }}</a><br /> {{unmarked_count}}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user