diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py index 4c7741d3b89620b1682532192acf7fb9ad1c0196..555042a1257138cb6494760ccd89f4d7b45207c1 100644 --- a/aleksis/apps/alsijil/managers.py +++ b/aleksis/apps/alsijil/managers.py @@ -6,6 +6,7 @@ from django.db.models.fields import DateField from django.db.models.functions import Concat from django.db.models.query import Prefetch from django.db.models.query_utils import Q +from django.utils.translation import gettext as _ from calendarweek import CalendarWeek @@ -71,6 +72,24 @@ class RegisterObjectRelatedQuerySet(QuerySet): ), ) + def annotate_subject(self) -> QuerySet: + """ + Annotate every personal note/lesson documentation with the subject of the lesson/event. + """ + return self.annotate( + subject=Case( + When( + lesson_period__isnull=False, + then="lesson_period__lesson__subject__name", + ), + When( + extra_lesson__isnull=False, + then="extra_lesson__subject__name", + ), + default=Value(_("Event")) + ) + ) + class PersonalNoteManager(CurrentSiteManagerWithoutMigrations): """Manager adding specific methods to personal notes.""" diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index c3bfd95ff9c4b2a33f714daa54ab09a1e8b4c33f..f8bff464572474685d52e981c321269255d64163 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -807,7 +807,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp ) .order_by( "-school_term_start", "-order_year", "-order_week", "-order_weekday", "order_period", - ) + ).annotate_date_range().annotate_subject() ) personal_note_filter_object = PersonalNoteFilter(request.GET, queryset=personal_notes) filtered_personal_notes = personal_note_filter_object.qs