From abadf5084c22080dee902a9a1a5a9fe7d60e6a47 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 22 Nov 2024 21:12:35 +0100 Subject: [PATCH] Further optimize queries --- aleksis/apps/alsijil/models.py | 7 ++++++- aleksis/apps/alsijil/schema/documentation.py | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 4d2487e0c..9e2d50dea 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -155,7 +155,12 @@ class Documentation(CalendarEvent): amends__in=[e["REFERENCE_OBJECT"] for e in events], ) .prefetch_related( - "participations", "teachers", "personal_notes", "personal_notes__extra_mark" + "participations", + "participations__person", + "participations__absence_reason", + "teachers", + "personal_notes", + "personal_notes__extra_mark", ) .select_related("course", "subject") ) diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py index 93e844c56..6b0c3e1ff 100644 --- a/aleksis/apps/alsijil/schema/documentation.py +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -1,6 +1,7 @@ from django.core.exceptions import PermissionDenied import graphene +from graphene_django import bypass_get_queryset from graphene_django.types import DjangoObjectType from reversion import create_revision, set_comment, set_user @@ -61,12 +62,14 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp old_id = graphene.ID(required=False) @staticmethod + @bypass_get_queryset def resolve_amends(root: Documentation, info, **kwargs): if hasattr(root, "_amends_prefetched"): return root._amends_prefetched return root.amends @staticmethod + @bypass_get_queryset def resolve_teachers(root: Documentation, info, **kwargs): if not str(root.pk).startswith("DUMMY") and hasattr(root, "teachers"): return root.teachers @@ -105,6 +108,7 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp ) @staticmethod + @bypass_get_queryset def resolve_participations(root: Documentation, info, **kwargs): # A dummy documentation will not have any participations if str(root.pk).startswith("DUMMY") or not hasattr(root, "participations"): -- GitLab