diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 9659dd63b078cb689e6e253a11217bcf06fcf96d..92d95446f0643864413854efa1baa828a01555ad 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -43,27 +43,27 @@ def timetable(request: HttpRequest) -> HttpResponse: elif lesson_periods.filter(lesson__teachers=request.user.person).exists(): return redirect(reverse('timetable') + '?teacher=%d' % request.user.person.pk) + # Regroup lesson periods per weekday per_day = {} - period_min, period_max = None, None for lesson_period in lesson_periods: per_day.setdefault(lesson_period.period.weekday, {})[lesson_period.period.period] = lesson_period - # Expand min and max lesson to later fill in empty lessons - if period_min is None or period_min > lesson_period.period.period: - period_min = lesson_period.period.period - if period_max is None or period_max < lesson_period.period.period: - period_max = lesson_period.period.period + # Determine overall first and last day and period + min_max = TimePeriod.objects..aggregate( + Min('period'), Max('period'), + Min('weekday'), Max('weekday')) # Fill in empty lessons - for weekday_num in range(min(per_day.keys() or [0]), - max(per_day.keys() or [6]) + 1): + for weekday_num in range(min_max.get('weekday__min', 0), + min_max.get('weekday__max', 6) + 1): # Fill in empty weekdays if weekday_num not in per_day.keys(): per_day[weekday_num] = {} # Fill in empty lessons on this workday - for period_num in range(period_min, period_max + 1): + for period_num in range(min_max.get('period__min', 1), + min_max.get('period__max', 7) + 1): if period_num not in per_day[weekday_num].keys(): per_day[weekday_num][period_num] = None