diff --git a/biscuit/apps/alsijil/menus.py b/biscuit/apps/alsijil/menus.py index fbeb707b19bf6b650a0ec1ba31adbfbb6f2081f5..32c08208ee3042ed6b6cf3d967516f083cb1699c 100644 --- a/biscuit/apps/alsijil/menus.py +++ b/biscuit/apps/alsijil/menus.py @@ -6,7 +6,7 @@ MENUS = { 'name': _('Class register'), 'url': '#', 'root': True, - 'validators': ['menu_generator.validators.is_authenticated'], + 'validators': ['menu_generator.validators.is_authenticated', 'biscuit.core.util.core_helpers.has_person'], 'submenu': [ { 'name': _('Current lesson'), diff --git a/biscuit/apps/alsijil/templates/alsijil/lesson.html b/biscuit/apps/alsijil/templates/alsijil/lesson.html index b458c619285f2d3c3d2773e555047a079775c2db..52c71b909fe2be15d7f5a6ee0cdbb04eda932e12 100644 --- a/biscuit/apps/alsijil/templates/alsijil/lesson.html +++ b/biscuit/apps/alsijil/templates/alsijil/lesson.html @@ -9,7 +9,17 @@ {% endblock %} {% block page_title %} - {% blocktrans %}Lesson documentation{% endblocktrans %} + {{ day }} - + + {% for group in lesson_period.get_groups.all %} + <span>{{ group.short_name }}</span>, + {% endfor %}, + + {{ lesson_period.get_subject.name }}, + + {% for teacher in lesson_period.get_teachers.all %} + {{ teacher.short_name }} + {% endfor %} {% endblock %} {% block content %} @@ -19,15 +29,7 @@ <div class="card"> <div class="card-header bg-light text-dark"> - {% for group in lesson_period.get_groups.all %} - <span>{{ group.short_name }}</span>, - {% endfor %} - - {{ lesson_period.get_subject.name }}, - - {% for teacher in lesson_period.get_teachers.all %} - {{ teacher.short_name }} - {% endfor %} + {% blocktrans %}Lesson documentation{% endblocktrans %} </div> <div class="card-body"> {% csrf_token %} diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py index 5cf9cfb389385c531381859339f88b33ab26e844..6ef5978fd414e9a054e370e4ee0ae4bca0554173 100644 --- a/biscuit/apps/alsijil/views.py +++ b/biscuit/apps/alsijil/views.py @@ -5,6 +5,7 @@ from django.contrib.auth.decorators import login_required from django.db.models import Q from django.http import HttpRequest, HttpResponse from django.shortcuts import render +from django.views.decorators.cache import cache_page from biscuit.apps.chronos.models import LessonPeriod, TimePeriod from biscuit.apps.chronos.util import current_lesson_periods, current_week, week_days @@ -30,6 +31,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional context['lesson_period'] = lesson_period context['week'] = wanted_week + context['day'] = week_days(wanted_week)[lesson_period.period.weekday] if lesson_period: # Create or get lesson documentation object; can be empty when first opening lesson @@ -40,7 +42,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional # Create all missing personal notes about members of all groups in lesson for group in lesson_period.lesson.groups.all(): - for person in group.members.all(): + for person in group.members.filter(is_active=True): note, created = PersonalNote.objects.get_or_create(person=person, lesson_period=lesson_period, week=wanted_week) @@ -63,6 +65,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional @login_required +@cache_page(60 * 60 * 4) def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse: context = {} @@ -81,10 +84,11 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse periods_by_day_unsorted = {} if group: - for lesson in group.lessons.filter(date_start__lte=week_start, date_end__gte=week_end): - for lesson_period in lesson.lesson_periods.all(): - periods_by_day_unsorted.setdefault( - lesson_period.period.weekday, []).append(lesson_period) + for act_group in [group] + list(group.child_groups.all()): + for lesson in act_group.lessons.filter(date_start__lte=week_start, date_end__gte=week_end): + for lesson_period in lesson.lesson_periods.all(): + periods_by_day_unsorted.setdefault( + lesson_period.period.weekday, []).append(lesson_period) periods_by_day = OrderedDict() for weekday, periods in sorted(periods_by_day_unsorted.items()):