From 77a2ef5fdcb877aa55ce5baa0c26a5cd6e60f9e5 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Thu, 18 Jul 2019 22:58:32 +0200 Subject: [PATCH] Fill empty periods each ay. --- .../chronos/templates/chronos/tt_day.html | 4 ++-- .../chronos/templates/chronos/tt_week.html | 2 +- biscuit/apps/chronos/views.py | 24 ++++++++++++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/biscuit/apps/chronos/templates/chronos/tt_day.html b/biscuit/apps/chronos/templates/chronos/tt_day.html index 97aea6a0..9f7e6f81 100644 --- a/biscuit/apps/chronos/templates/chronos/tt_day.html +++ b/biscuit/apps/chronos/templates/chronos/tt_day.html @@ -1,11 +1,11 @@ <div class="col-sm"> <ul class="list-group"> <li class="list-group-item active"> - {{ lesson_periods.0.period.get_weekday_display }} + {{ weekday_name }} </li> </ul> <div class="container"> - {% for lesson_period in lesson_periods %} + {% for period_num, lesson_period in lesson_periods.items %} <div class="row"> <div class="col-sm"> {% include "chronos/tt_lesson.html" with lesson_period=lesson_period %} diff --git a/biscuit/apps/chronos/templates/chronos/tt_week.html b/biscuit/apps/chronos/templates/chronos/tt_week.html index dc9052ad..19408103 100644 --- a/biscuit/apps/chronos/templates/chronos/tt_week.html +++ b/biscuit/apps/chronos/templates/chronos/tt_week.html @@ -47,7 +47,7 @@ </div> {% for weekday, lesson_periods_day in lesson_periods.items %} - {% include "chronos/tt_day.html" with lesson_periods=lesson_periods_day %} + {% include "chronos/tt_day.html" with weekday_name=weekdays.weekday lesson_periods=lesson_periods_day %} {% endfor %} </div> {% endblock %} diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 2530ae3a..8eaebfe4 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -36,17 +36,35 @@ def timetable(request): pk=int(request.GET['room'])).name) per_day = {} + period_min, period_max = None, None for lesson_period in lesson_periods: per_day.setdefault(lesson_period.period.weekday, - []).append(lesson_period) + {})[lesson_period.period.period] = lesson_period - # Fill in weekdays without lessons (to get a compet timetable) + # 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 + + # Fill in empty lessons for weekday_num in range(min(per_day.keys()), max(per_day.keys()) + 1): + # Fill in empty weekdays if weekday_num not in per_day.keys(): - per_day[weekday_num] = [] + per_day[weekday_num] = {} + + # Fill in empty lessons on this workday + for period_num in range(period_min, period_max + 1): + if period_num not in per_day[weekday_num].keys(): + per_day[weekday_num][period_num] = None + + # Order this weekday by periods + per_day[weekday_num] = OrderedDict( + sorted(per_day[weekday_num].items())) context['lesson_periods'] = OrderedDict(sorted(per_day.items())) context['filter_descs'] = ', '.join(filter_descs) context['periods'] = TimePeriod.get_times_dict() + context['weekdays'] = dict(TimePeriod.WEEKDAY_CHOICES) return render(request, 'chronos/tt_week.html', context) -- GitLab