From 5a66f5fb04f3eca49cd9b0fce3a8b8013a94f9ad Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Tue, 14 Jul 2020 21:10:55 +0200
Subject: [PATCH] [Week view] Show statistics on extra marks

---
 .../alsijil/class_register/week_view.html       |  7 ++++++-
 aleksis/apps/alsijil/views.py                   | 17 +++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
index e42575fd0..5d26d3d29 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
@@ -1,7 +1,7 @@
 {# -*- engine:django -*- #}
 
 {% extends "core/base.html" %}
-{% load material_form i18n week_helpers static %}
+{% load material_form i18n week_helpers static data_helpers %}
 
 {% block browser_title %}{% blocktrans %}Week view{% endblocktrans %}{% endblock %}
 
@@ -96,6 +96,11 @@
               <p class="card-text">
                 {% trans "Summed up tardiness" %}: {{ person.tardiness_sum }}'
               </p>
+              {% for extra_mark in extra_marks %}
+                <p class="card-text">
+                  {{ extra_mark.name }}: {{ person|get_dict:extra_mark.count_label }}
+                </p>
+              {% endfor %}
               {% for note in person.personal_notes|only_week:week %}
                 {% if note.remarks %}
                   <blockquote>
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 17f2b75ec..43d1db178 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -226,6 +226,22 @@ def week_view(
                 ),
             )
         )
+
+        for extra_mark in ExtraMark.objects.all():
+            persons = persons.annotate(
+                **{
+                    extra_mark.count_label: Count(
+                        "personal_notes",
+                        filter=Q(
+                            personal_notes__lesson_period__in=lesson_periods,
+                            personal_notes__week=wanted_week.week,
+                            personal_notes__extra_marks=extra_mark,
+                        ),
+                        distinct=True,
+                    )
+                }
+            )
+
     else:
         persons = None
 
@@ -234,6 +250,7 @@ def week_view(
         lesson_periods, key=lambda x: (x.period.weekday, x.period.period)
     )
 
+    context["extra_marks"] = ExtraMark.objects.all()
     context["week"] = wanted_week
     context["lesson_periods"] = lesson_periods
     context["persons"] = persons
-- 
GitLab