diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 57768babbc029e3da42359550120a01fb5cf6517..d0129090a5faf99547695eb4568748d996d5274f 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -1,5 +1,5 @@ from datetime import date -from typing import Optional, Union +from typing import Dict, Optional, Union from django.db.models import Exists, OuterRef, QuerySet @@ -8,7 +8,7 @@ from calendarweek import CalendarWeek from aleksis.apps.chronos.models import LessonPeriod from aleksis.core.models import Group, Person -from .models import LessonDocumentation, PersonalNote +from .models import ExtraMark, LessonDocumentation, PersonalNote @Person.method @@ -150,3 +150,20 @@ def get_tardinesses(self, week: Optional[CalendarWeek] = None) -> QuerySet: if not week: week = self.week return self.personal_notes.filter(week=week.week, late__gt=0) + + +@LessonPeriod.method +def get_extra_marks( + self, week: Optional[CalendarWeek] = None +) -> Dict[ExtraMark, QuerySet]: + """Get all statistics on extra marks for this lesson.""" + if not week: + week = self.week + + stats = {} + for extra_mark in ExtraMark.objects.all(): + qs = self.personal_notes.filter(week=week.week, extra_marks=extra_mark) + if qs: + stats[extra_mark] = qs + + return stats diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html index 79374d4726d1013837803576d7f29c2ac5318907..b819c932233df2927db8f6ddd2f424043b027078 100644 --- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html @@ -60,7 +60,7 @@ <div class="row"> <div class="col s12 m12 l6 xl8"> {% with prev_lesson=lesson_period.prev prev_doc=prev_lesson.get_lesson_documentation %} - {% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses %} + {% with prev_doc=prev_lesson.get_lesson_documentation absences=prev_lesson.get_absences tardinesses=prev_lesson.get_tardinesses extra_marks=prev_lesson.get_extra_marks %} {% if prev_doc %} {% weekday_to_date prev_lesson.week prev_lesson.period.weekday as prev_date %} @@ -99,6 +99,18 @@ <td>{% include "alsijil/partials/tardinesses.html" with notes=tardinesses %}</td> </tr> {% endif %} + + {% for extra_mark, notes in extra_marks.items %} + <tr> + <th>{{ extra_mark.name }}</th> + <td> + {% for note in notes %} + <span>{{ note.person }}{% if not forloop.last %},{% endif %}</span> + {% endfor %} + </td> + </tr> + {% endfor %} + </table> </div> </div>