diff --git a/biscuit/apps/chronos/templates/chronos/tt_day.html b/biscuit/apps/chronos/templates/chronos/tt_day.html index 97aea6a0c71e2cf25aaeee8e6d4963f5c34fabe2..9f7e6f81756892d5ebe9eff1b2a73fcec94f006b 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 dc9052adcace27643e2f5927e82e7cc2b6bec5cd..194081034a657f640a853823d9cf977c73868f14 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 2530ae3a8fdc906a157dc609f85d7bf28a233467..8eaebfe4db4be55776e3ffe511ab98d92ebb8a4c 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)