From 49718f69811f5a4570fcc6b0d2c9bb663484076f Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 14 Jul 2020 21:17:42 +0200 Subject: [PATCH] [Lesson overview] Show extra marks of previous lesson --- aleksis/apps/alsijil/model_extensions.py | 21 +++++++++++++++++-- .../alsijil/class_register/lesson.html | 14 ++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 57768babb..d0129090a 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 79374d472..b819c9322 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> -- GitLab