From 5795aa01a00dff8759dbd0f5b00834b26a5abf89 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Mon, 7 Sep 2020 14:23:38 +0200 Subject: [PATCH] Add personal note manager in order to prefetch some data --- aleksis/apps/alsijil/managers.py | 23 +++++++++++++++++++++++ aleksis/apps/alsijil/models.py | 3 +++ 2 files changed, 26 insertions(+) create mode 100644 aleksis/apps/alsijil/managers.py diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py new file mode 100644 index 000000000..b2589345a --- /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 66f6477d2..e64bac1af 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" ) -- GitLab