diff --git a/aleksis/apps/lesrooster/managers.py b/aleksis/apps/lesrooster/managers.py index aa9877de0598d27cea6dc0c65d1a187dbc3aff27..a4971e95e6b6d1b6caf735e681093130bf1d2c8e 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 41ac058a93163a361fc4a3bf43de6372597bdb30..c7fe29fbfd17fccacb27c5c6d007af4018e19843 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, []) ), }