From f93485febeac1722011936906d023a471e11db5e Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Mon, 7 Sep 2020 14:18:01 +0200
Subject: [PATCH] Add group manager in order to prefetch related school term
 everytime

---
 aleksis/core/managers.py | 12 ++++++++++++
 aleksis/core/models.py   |  9 ++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/aleksis/core/managers.py b/aleksis/core/managers.py
index a08710780..02a0cb6fb 100644
--- a/aleksis/core/managers.py
+++ b/aleksis/core/managers.py
@@ -79,3 +79,15 @@ class SchoolTermRelatedQuerySet(QuerySet):
             return self.for_school_term(current_school_term)
         else:
             return None
+
+
+class GroupManager(CurrentSiteManagerWithoutMigrations):
+    """Manager adding specific methods to groups."""
+
+    def get_queryset(self):
+        """Ensure all related data is loaded as well."""
+        return super().get_queryset().select_related("school_term")
+
+
+class GroupQuerySet(SchoolTermRelatedQuerySet):
+    pass
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index bd1cfe12d..00a2faacd 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -23,7 +23,12 @@ from dynamic_preferences.models import PerInstancePreferenceModel
 from phonenumber_field.modelfields import PhoneNumberField
 from polymorphic.models import PolymorphicModel
 
-from .managers import CurrentSiteManagerWithoutMigrations, SchoolTermQuerySet
+from .managers import (
+    CurrentSiteManagerWithoutMigrations,
+    GroupManager,
+    GroupQuerySet,
+    SchoolTermQuerySet,
+)
 from .mixins import ExtensibleModel, PureDjangoModel, SchoolTermRelatedExtensibleModel
 from .tasks import send_notification
 from .util.core_helpers import get_site_preferences, now_tomorrow
@@ -313,6 +318,8 @@ class Group(SchoolTermRelatedExtensibleModel):
     classes, clubs, and the like.
     """
 
+    objects = GroupManager.from_queryset(GroupQuerySet)()
+
     class Meta:
         ordering = ["short_name", "name"]
         verbose_name = _("Group")
-- 
GitLab