This commit is contained in:
Ross
2021-12-19 23:11:11 +00:00
parent ef0d87deb0
commit e3ea5e9a6f
2 changed files with 28 additions and 17 deletions
+21 -15
View File
@@ -415,7 +415,9 @@ class ExamViews(View, LoginRequiredMixin):
raise PermissionDenied raise PermissionDenied
return render( return render(
request, "exam_list.html".format(self.app_name), {"exams": exams, "app_name": self.app_name} request,
"exam_list.html".format(self.app_name),
{"exams": exams, "app_name": self.app_name, "view_all": all},
) )
@method_decorator(login_required) @method_decorator(login_required)
@@ -450,10 +452,12 @@ class ExamViews(View, LoginRequiredMixin):
.all() .all()
.prefetch_related( .prefetch_related(
Prefetch( Prefetch(
"answers", "answers",
queryset=self.Answer.objects.filter(proposed=False, status=self.Answer.MarkOptions.CORRECT), queryset=self.Answer.objects.filter(
to_attr="prefetched_primary_answer" proposed=False, status=self.Answer.MarkOptions.CORRECT
#queryset=self.Answer.objects.filter(), ),
to_attr="prefetched_primary_answer"
# queryset=self.Answer.objects.filter(),
), ),
) )
) )
@@ -635,19 +639,21 @@ class ExamViews(View, LoginRequiredMixin):
) )
.all() .all()
.prefetch_related( .prefetch_related(
#"cid_user_answers", # "cid_user_answers",
Prefetch( Prefetch(
"answers", "answers",
queryset=self.Answer.objects.filter(proposed=False, status=self.Answer.MarkOptions.CORRECT), queryset=self.Answer.objects.filter(
to_attr="prefetched_primary_answer" proposed=False, status=self.Answer.MarkOptions.CORRECT
#queryset=self.Answer.objects.filter(), ),
to_attr="prefetched_primary_answer"
# queryset=self.Answer.objects.filter(),
), ),
#Prefetch( # Prefetch(
# "cid_user_answers", # "cid_user_answers",
# queryset=self.CidUserAnswer.objects.filter(score=self.Answer.MarkOptions.UNMARKED, exam__id=pk), # queryset=self.CidUserAnswer.objects.filter(score=self.Answer.MarkOptions.UNMARKED, exam__id=pk),
# to_attr="prefetched_unmarked_cid_answers" # to_attr="prefetched_unmarked_cid_answers"
# #queryset=self.Answer.objects.filter(), # #queryset=self.Answer.objects.filter(),
#), # ),
) )
) )
else: else:
@@ -936,7 +942,7 @@ class ExamViews(View, LoginRequiredMixin):
user_answers_marks = defaultdict(list) user_answers_marks = defaultdict(list)
user_answers = defaultdict(list) user_answers = defaultdict(list)
user_names = {} user_names = {}
#cid_passcodes = {} # cid_passcodes = {}
by_question = defaultdict(dict) by_question = defaultdict(dict)
unmarked = set() unmarked = set()
@@ -954,7 +960,7 @@ class ExamViews(View, LoginRequiredMixin):
for cid_user_answer in cid_user_answers: for cid_user_answer in cid_user_answers:
# Convoluted (probably...) # Convoluted (probably...)
cid = cid_user_answer.cid cid = cid_user_answer.cid
#cid_passcodes[cid] = cid_user_answer.passcode # cid_passcodes[cid] = cid_user_answer.passcode
cids.add(cid) cids.add(cid)
s = cid_user_answer s = cid_user_answer
user_names[cid] = cid user_names[cid] = cid
@@ -1055,7 +1061,7 @@ class ExamViews(View, LoginRequiredMixin):
f"{self.app_name}/exam_scores_new.html", f"{self.app_name}/exam_scores_new.html",
{ {
"cids": sorted(cids), "cids": sorted(cids),
#"cid_passcodes": cid_passcodes, # "cid_passcodes": cid_passcodes,
"exam": exam, "exam": exam,
"unmarked": unmarked, "unmarked": unmarked,
"questions": questions, "questions": questions,
+7 -2
View File
@@ -8,7 +8,7 @@
{% for exam in exams %} {% for exam in exams %}
{% if exam.active %} {% if exam.active %}
<li> <li>
<a href="{% url app_name|add:'exam_overview' pk=exam.pk %}" class="flex-col">{{exam.name}}</a> <a href="{% url app_name|add:'mark_overview' pk=exam.pk %}" class="flex-col">Mark</a><a href="{% url app_name|add:'exam_scores_cid' pk=exam.pk %}" class="flex-col">Scores</a> <span class="flex-col icon-container"><span class="published-icon {% if exam.publish_results %}published{% endif %}">Results Published</span></span> <a href="{% url app_name|add:':exam_overview' pk=exam.pk %}" class="flex-col">{{exam.name}}</a> <a href="{% url app_name|add:':mark_overview' pk=exam.pk %}" class="flex-col">Mark</a><a href="{% url app_name|add:':exam_scores_cid' pk=exam.pk %}" class="flex-col">Scores</a> <span class="flex-col icon-container"><span class="published-icon {% if exam.publish_results %}published{% endif %}">Results Published</span></span>
</li> </li>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
@@ -19,12 +19,17 @@
{% for exam in exams %} {% for exam in exams %}
{% if not exam.active %} {% if not exam.active %}
<li> <li>
<a href="{% url app_name|add:'exam_overview' pk=exam.pk %}" class="flex-col">{{exam.name}}</a> <a href="{% url app_name|add:'mark_overview' pk=exam.pk %}" class="flex-col">Mark</a><a href="{% url app_name|add:'exam_scores_cid' pk=exam.pk %}" class="flex-col">Scores</a> <span class="flex-col icon-container"><span class="published-icon {% if exam.publish_results %}published{% endif %}">Results Published</span></span> <a href="{% url app_name|add:':exam_overview' pk=exam.pk %}" class="flex-col">{{exam.name}}</a> <a href="{% url app_name|add:':mark_overview' pk=exam.pk %}" class="flex-col">Mark</a><a href="{% url app_name|add:':exam_scores_cid' pk=exam.pk %}" class="flex-col">Scores</a> <span class="flex-col icon-container"><span class="published-icon {% if exam.publish_results %}published{% endif %}">Results Published</span></span>
</li> </li>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</ul> </ul>
{% if view_all %}
<a href="{% url app_name|add:':exam_list' %}">Hide archived</a>
{% else %}
<a href="{% url app_name|add:':exam_list_all' %}">View all</a>
{% endif %}
</div> </div>
{% endblock %} {% endblock %}