From e5980467cd61c8b1ccd5815911bb9eb43289eb88 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Sat, 31 Aug 2019 18:04:21 +0200 Subject: [PATCH] Add lesson list view. Advances #11, #12. --- biscuit/apps/chronos/menus.py | 5 +++ .../templates/chronos/lessons_list.html | 42 +++++++++++++++++++ biscuit/apps/chronos/urls.py | 1 + biscuit/apps/chronos/views.py | 6 +-- 4 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 biscuit/apps/chronos/templates/chronos/lessons_list.html diff --git a/biscuit/apps/chronos/menus.py b/biscuit/apps/chronos/menus.py index 4ac8cff5..49c9fb5d 100644 --- a/biscuit/apps/chronos/menus.py +++ b/biscuit/apps/chronos/menus.py @@ -12,6 +12,11 @@ MENUS = { 'name': _('Timetable'), 'url': 'timetable', 'validators': ['menu_generator.validators.is_authenticated'] + }, + { + 'name': _('List of lessons'), + 'url': 'lessons_list', + 'validators': ['menu_generator.validators.is_authenticated'] } ] } diff --git a/biscuit/apps/chronos/templates/chronos/lessons_list.html b/biscuit/apps/chronos/templates/chronos/lessons_list.html new file mode 100644 index 00000000..b51a9c51 --- /dev/null +++ b/biscuit/apps/chronos/templates/chronos/lessons_list.html @@ -0,0 +1,42 @@ +{# -*- engine:django -*- #} +{% extends "core/base.html" %} +{% load bootstrap4 font_awesome i18n week_helpers %} + +{% block page_title %} + {% blocktrans %}List of lessons{% endblocktrans %}, + {{ week|week_start }} - {{ week|week_end }} +{% endblock %} + +{% block content %} + <form method="get"> + {% csrf_token %} + <ul id="timetable_select_form"> + {{ select_form.as_ul }} + </ul> + <input type="submit" value="Select" /> + </form> + + {% for weekday, lesson_periods_day in lesson_periods %} + <h3>{{ weekday }}</h3> + <table class="table table-striped table-bordered table-hover table-responsive-xl"> + <thead> + <tr> + <th>{% blocktrans %}Period{% endblocktrans %}</th> + <th>{% blocktrans %}Groups{% endblocktans %}</th> + <th>{% blocktrans %}Subject{% endblocktrans %}</th> + <th>{% blocktrans %}Teachers{% endblocktrans %}</th> + </tr> + </thead> + <tbody> + {% for period in lesson_periods_day %} + <tr> + <td>{{ period.period.period }}</td> + <td>{{ period.lesson.subject.name }}</td> + <td>{{ period.lesson.groups|join:', ' }}</td> + <td>{{ period.lesson.teachers|join:', ' }}</td> + </tr> + {% endfor %} + </tbody> + </table> + {% endfor %} +{% endblock %} diff --git a/biscuit/apps/chronos/urls.py b/biscuit/apps/chronos/urls.py index fb05d07e..0f2b804c 100644 --- a/biscuit/apps/chronos/urls.py +++ b/biscuit/apps/chronos/urls.py @@ -5,4 +5,5 @@ from . import views urlpatterns = [ path('timetable', views.timetable, name='timetable'), + path('lessons', views.timetable, {'template': 'lessons_list'}, name='lessons_list'), ] diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 0e6d69da..acbf0d34 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -16,7 +16,7 @@ from .util import current_week @login_required -def timetable(request: HttpRequest) -> HttpResponse: +def timetable(request: HttpRequest, template: str = 'tt_week') -> HttpResponse: context = {} lesson_periods = LessonPeriod.objects.all() @@ -32,7 +32,7 @@ def timetable(request: HttpRequest) -> HttpResponse: if 'room' in request.GET and request.GET['room']: lesson_periods = lesson_periods.filter( room__pk=int(request.GET['room'])) - else: + elif template == 'tt_week': # Redirect to a selected view if no filter provided if request.user.person: if request.user.person.primary_group: @@ -77,4 +77,4 @@ def timetable(request: HttpRequest) -> HttpResponse: context['current_week'] = current_week() context['select_form'] = select_form - return render(request, 'chronos/tt_week.html', context) + return render(request, 'chronos/%s.html' % template, context) -- GitLab