From 9b35463de4d79d9547f9307f9728f69b49d36a5f Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Tue, 3 Sep 2019 19:59:54 +0200
Subject: [PATCH] Prefetch related lesson substitution data.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It’s still not used yet, due to filtering; this will appear in
a subsequent commit.
---
 biscuit/apps/chronos/views.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index f4b4187b..73a517d1 100644
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -31,7 +31,13 @@ def timetable(request: HttpRequest, week: Optional[int] = None) -> HttpResponse:
     lesson_periods = LessonPeriod.objects.filter(
         lesson__date_start__gte=week_days(wanted_week)[0],
         lesson__date_end__lte=week_days(wanted_week)[-1]
-    ).select_related('period', 'lesson').extra(select={'_week': wanted_week})
+    ).select_related(
+        'period', 'lesson'
+    ).prefetch_related(
+        'substitutions'
+    ).extra(
+        select={'_week': wanted_week}
+    )
 
     if request.GET.get('group', None) or request.GET.get('teacher', None) or request.GET.get('room', None):
         # Incrementally filter lesson periods by GET parameters
-- 
GitLab