From de33dc2d784a2cfd072b28be6c4a90cd023c1906 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sun, 29 Dec 2024 13:13:50 +0100
Subject: [PATCH] Update timetable printing for lesson bundles

---
 aleksis/apps/lesrooster/managers.py   |  3 ++-
 aleksis/apps/lesrooster/util/build.py | 10 +++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/aleksis/apps/lesrooster/managers.py b/aleksis/apps/lesrooster/managers.py
index aa9877d..a4971e9 100644
--- a/aleksis/apps/lesrooster/managers.py
+++ b/aleksis/apps/lesrooster/managers.py
@@ -1,5 +1,6 @@
+from collections.abc import Iterable
 from datetime import time
-from typing import Iterable, Optional, Union
+from typing import Optional, Union
 
 from django.db.models import Max, Min, Q, QuerySet
 from django.db.models.functions import Coalesce
diff --git a/aleksis/apps/lesrooster/util/build.py b/aleksis/apps/lesrooster/util/build.py
index 41ac058..c7fe29f 100644
--- a/aleksis/apps/lesrooster/util/build.py
+++ b/aleksis/apps/lesrooster/util/build.py
@@ -25,11 +25,13 @@ def build_timetable(
     max_slots = len(max_slots)
 
     # Get matching lessons
-    lessons = Lesson.objects.filter(slot_start__time_grid=time_grid).filter_from_type(type_, obj)
+    lessons = Lesson.objects.filter(bundle__slot_start__time_grid=time_grid).filter_from_type(
+        type_, obj
+    )
 
     # Sort lesson periods in a dict
     for lesson in lessons:
-        lesson_periods_per_slot[lesson.slot_start].append(lesson)
+        lesson_periods_per_slot[lesson.bundle.all()[0].slot_start].append(lesson)
 
     # Get matching supervisions
     supervisions = Supervision.objects.filter(break_slot__time_grid=time_grid).filter_from_type(
@@ -65,9 +67,7 @@ def build_timetable(
                 col = {
                     "type": "period",
                     "col": (
-                        lesson_periods_per_slot[actual_slot]
-                        if actual_slot in lesson_periods_per_slot
-                        else []
+                        lesson_periods_per_slot.get(actual_slot, [])
                     ),
                 }
 
-- 
GitLab