From e223b95da5192095b42c41d4cd40d26cf4791d21 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Mon, 7 Sep 2020 14:25:07 +0200
Subject: [PATCH] [Full register] Get lessons and child groups in view and
 prefetch data there

---
 .../templates/alsijil/print/full_register.html      |  4 ++--
 aleksis/apps/alsijil/views.py                       | 13 ++++++++++++-
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
index 03b75de7b..6820996b7 100644
--- a/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
+++ b/aleksis/apps/alsijil/templates/alsijil/print/full_register.html
@@ -175,7 +175,7 @@
       </thead>
 
       <tbody>
-      {% for lesson in group.lessons.all %}
+      {% for lesson in lessons %}
         <tr>
           <td>{{ lesson.subject.name }}</td>
           <td>{{ lesson.teachers.all|join:', ' }}</td>
@@ -206,7 +206,7 @@
       </thead>
 
       <tbody>
-      {% for child_group in group.child_groups.all %}
+      {% for child_group in child_groups %}
         {% for lesson in child_group.lessons.all %}
           <tr>
             <td>{{ child_group.name }}</td>
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 6e2dda372..24c73d2e6 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -471,7 +471,18 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     context["periods_by_day"] = periods_by_day
     context["lesson_periods"] = lesson_periods
     context["today"] = date.today()
-
+    context["lessons"] = (
+        group.lessons.all()
+        .select_related("validity", "subject")
+        .prefetch_related("teachers", "lesson_periods")
+    )
+    context["child_groups"] = group.child_groups.all().prefetch_related(
+        "lessons",
+        "lessons__validity",
+        "lessons__subject",
+        "lessons__teachers",
+        "lessons__lesson_periods",
+    )
     return render(request, "alsijil/print/full_register.html", context)
 
 
-- 
GitLab