Skip to content
Snippets Groups Projects
Verified Commit da3f326a authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Add function to get lessons on date. Advances #33, #34.

parent 6c73fa33
No related branches found
No related tags found
No related merge requests found
from datetime import datetime, timedelta from datetime import date, datetime, timedelta
from typing import Dict, Optional, Tuple from typing import Dict, Optional, Tuple
from django.core import validators from django.core import validators
...@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ ...@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from biscuit.core.mixins import SchoolRelated from biscuit.core.mixins import SchoolRelated
from .util import CalendarWeek from .util import CalendarWeek, week_weekday_from_date
class LessonPeriodManager(models.Manager): class LessonPeriodManager(models.Manager):
...@@ -37,6 +37,16 @@ class LessonPeriodQuerySet(models.QuerySet): ...@@ -37,6 +37,16 @@ class LessonPeriodQuerySet(models.QuerySet):
select={'_week': wanted_week.week} 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): def filter_group(self, group: int):
return self.filter( return self.filter(
Q(lesson__groups__pk=group) | Q(lesson__groups__parent_groups__pk=group)) Q(lesson__groups__pk=group) | Q(lesson__groups__parent_groups__pk=group))
......
...@@ -16,7 +16,7 @@ from biscuit.core.util import messages ...@@ -16,7 +16,7 @@ from biscuit.core.util import messages
from .forms import SelectForm, LessonSubstitutionForm from .forms import SelectForm, LessonSubstitutionForm
from .models import LessonPeriod, TimePeriod, LessonSubstitution from .models import LessonPeriod, TimePeriod, LessonSubstitution
from .util import CalendarWeek, week_weekday_from_date from .util import CalendarWeek
from .tables import LessonsTable from .tables import LessonsTable
...@@ -97,22 +97,16 @@ def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpRespons ...@@ -97,22 +97,16 @@ def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpRespons
else: else:
day = date.today() day = date.today()
week, weekday = week_weekday_from_date(day)
# Get lessons # Get lessons
lesson_periods = LessonPeriod.objects.filter( lesson_periods = LessonPeriod.objects.on_day(day)
lesson__date_start__lte=day, lesson__date_end__gte=day,
period__weekday=weekday
)
# Build table # Build table
lessons_table = LessonsTable(lesson_periods.extra(select={'_week': week.week}).all()) lessons_table = LessonsTable(lesson_periods.all())
RequestConfig(request).configure(lessons_table) RequestConfig(request).configure(lessons_table)
context['current_head'] = _('Lessons %s') % (day) context['current_head'] = _('Lessons %s') % (day)
context['lessons_table'] = lessons_table context['lessons_table'] = lessons_table
context['day'] = day context['day'] = day
context['week'] = week
context['lesson_periods'] = lesson_periods context['lesson_periods'] = lesson_periods
day_prev = day - timedelta(days=1) day_prev = day - timedelta(days=1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment