diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py new file mode 100644 index 0000000000000000000000000000000000000000..b2589345adac4c2c02159ea54fc872fe9055408a --- /dev/null +++ b/aleksis/apps/alsijil/managers.py @@ -0,0 +1,23 @@ +from aleksis.core.managers import CurrentSiteManagerWithoutMigrations + + +class PersonalNoteManager(CurrentSiteManagerWithoutMigrations): + """Manager adding specific methods to personal notes.""" + + def get_queryset(self): + """Ensure all related lesson and person data are loaded as well.""" + return ( + super() + .get_queryset() + .select_related( + "person", + "excuse_type", + "lesson_period", + "lesson_period__lesson", + "lesson_period__lesson__subject", + "lesson_period__period", + "lesson_period__lesson__validity", + "lesson_period__lesson__validity__school_term", + ) + .prefetch_related("extra_marks") + ) diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 66f6477d22165c085abd0855502686d505d75c75..e64bac1afd260f3571c17bfa6b2c639c03d5b915 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _ from calendarweek import CalendarWeek +from aleksis.apps.alsijil.managers import PersonalNoteManager from aleksis.apps.chronos.mixins import WeekRelatedMixin from aleksis.apps.chronos.models import LessonPeriod from aleksis.apps.chronos.util.date import get_current_year @@ -46,6 +47,8 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin): and remarks about a student in a single lesson period. """ + objects = PersonalNoteManager() + person = models.ForeignKey( "core.Person", models.CASCADE, related_name="personal_notes" )