From 08ff6b8aa8f7c65f30f558ee11e2879d558d9f2d Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Thu, 22 Aug 2019 21:47:42 +0200 Subject: [PATCH] Add view for all lessons on a day. Advances #19. --- biscuit/apps/chronos/menus.py | 5 +++++ biscuit/apps/chronos/tables.py | 13 +++++++++++++ .../chronos/templates/chronos/lessons.html | 14 ++++++++++++++ biscuit/apps/chronos/urls.py | 1 + biscuit/apps/chronos/views.py | 18 ++++++++++++++++++ 5 files changed, 51 insertions(+) create mode 100644 biscuit/apps/chronos/tables.py create mode 100644 biscuit/apps/chronos/templates/chronos/lessons.html diff --git a/biscuit/apps/chronos/menus.py b/biscuit/apps/chronos/menus.py index 2d81f31e..a3ced231 100644 --- a/biscuit/apps/chronos/menus.py +++ b/biscuit/apps/chronos/menus.py @@ -11,6 +11,11 @@ MENUS = { 'name': _('Timetable'), 'url': 'timetable', 'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser'] + }, + { + 'name': _('Lessons'), + 'url': 'lessons', + 'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser'] } ] } diff --git a/biscuit/apps/chronos/tables.py b/biscuit/apps/chronos/tables.py new file mode 100644 index 00000000..f19deaea --- /dev/null +++ b/biscuit/apps/chronos/tables.py @@ -0,0 +1,13 @@ +from django.utils.translation import ugettext_lazy as _ +import django_tables2 as tables +from django_tables2.utils import A + + +class LessonsTable(tables.Table): + class Meta: + attrs = {'class': 'table table-striped table-bordered table-hover table-responsive-xl'} + + subject = tables.LinkColumn('substitution_by_id', args=[A('id')]) + teachers = tables.LinkColumn('substitution_by_id', args=[A('id')]) + periods = tables.LinkColumn('substitution_by_id', args=[A('id')]) + groups = tables.LinkColumn('substitution_by_id', args=[A('id')]) diff --git a/biscuit/apps/chronos/templates/chronos/lessons.html b/biscuit/apps/chronos/templates/chronos/lessons.html new file mode 100644 index 00000000..07316ccb --- /dev/null +++ b/biscuit/apps/chronos/templates/chronos/lessons.html @@ -0,0 +1,14 @@ +{% extends "core/base.html" %} +{% load bootstrap4 i18n %} +{% load render_table from django_tables2 %} + +{% block page_title %}{% blocktrans %}Lessons{% endblocktrans %}{% endblock %} + +{% block content %} + <h2> + {% blocktrans %}List of all Lessons{% endblocktrans %} + </h2> + + {% render_table lessons_table %} + +{% endblock %} diff --git a/biscuit/apps/chronos/urls.py b/biscuit/apps/chronos/urls.py index fb05d07e..f1eb9a17 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.lessons, name='lessons'), ] diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 9659dd63..7d876204 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -1,4 +1,5 @@ from collections import OrderedDict +from datetime import datetime from django.contrib.auth.decorators import login_required from django.http import HttpRequest, HttpResponse @@ -11,6 +12,7 @@ from biscuit.core.models import Group, Person from .models import LessonPeriod, TimePeriod, Room from .util import current_week +from .tables import LessonsTable @login_required @@ -78,3 +80,19 @@ def timetable(request: HttpRequest) -> HttpResponse: context['current_week'] = current_week() return render(request, 'chronos/tt_week.html', context) + +@login_required +@admin_required +def lessons(request: HttpRequest) -> HttpResponse: + context = {} + + today = datetime.today() + + lessons = Lesson.objects.filter(date_start=today) + + # Build table + lessons_table = LessonsTable(lessons) + RequestConfig(request).configure(lessons_table) + context['lessons_table'] = lessons_table + + return render(request, 'chronos/lessons.html', context) -- GitLab