diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index 49ba3b422b220c03febec7ad0a4f63f424fd54e2..9ef800d857e22d0003ccb092ef44e662dee092c0 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import date, datetime, timedelta from typing import Dict, Optional, Tuple from django.core import validators @@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ from biscuit.core.mixins import SchoolRelated -from .util import CalendarWeek +from .util import CalendarWeek, week_weekday_from_date class LessonPeriodManager(models.Manager): @@ -37,6 +37,16 @@ class LessonPeriodQuerySet(models.QuerySet): select={'_week': wanted_week.week} ) + def on_day(self, day: date): + week, weekday = week_weekday_from_date(day) + + return self.filter( + lesson__date_start__lte=day, lesson__date_end__gte=day, + period__weekday=weekday + ).extra( + select={'_week': week.week} + ) + def filter_group(self, group: int): return self.filter( Q(lesson__groups__pk=group) | Q(lesson__groups__parent_groups__pk=group)) diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py index 383ea34dfcf706e7397538a7d7a2ddd6f3799d8e..084e65035d1487d0e1a20f040f043e2deb90568b 100644 --- a/biscuit/apps/chronos/views.py +++ b/biscuit/apps/chronos/views.py @@ -16,7 +16,7 @@ from biscuit.core.util import messages from .forms import SelectForm, LessonSubstitutionForm from .models import LessonPeriod, TimePeriod, LessonSubstitution -from .util import CalendarWeek, week_weekday_from_date +from .util import CalendarWeek from .tables import LessonsTable @@ -97,22 +97,16 @@ def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpRespons else: day = date.today() - week, weekday = week_weekday_from_date(day) - # Get lessons - lesson_periods = LessonPeriod.objects.filter( - lesson__date_start__lte=day, lesson__date_end__gte=day, - period__weekday=weekday - ) + lesson_periods = LessonPeriod.objects.on_day(day) # Build table - lessons_table = LessonsTable(lesson_periods.extra(select={'_week': week.week}).all()) + lessons_table = LessonsTable(lesson_periods.all()) RequestConfig(request).configure(lessons_table) context['current_head'] = _('Lessons %s') % (day) context['lessons_table'] = lessons_table context['day'] = day - context['week'] = week context['lesson_periods'] = lesson_periods day_prev = day - timedelta(days=1)