From af5d0aa9a99ba85eb77e1598972fa8b1f12f0af3 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Sun, 27 Oct 2019 15:35:12 +0100 Subject: [PATCH] Add within_dates method and weekify at_time. Advances #33, #34. --- biscuit/apps/chronos/models.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index 7654c18d..0c454a1c 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -40,24 +40,31 @@ class LessonPeriodQuerySet(models.QuerySet): select={'_week': wanted_week.week} ) + def within_dates(self, start: date, end: date): + return self.filter(lesson__date_start__gte=start, lesson__date_end__lte=end) + 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 + return self.within_dates(day, day).filter( + period_weekday=weekday ).extra( select={'_week': week.week} ) def at_time(self, when: Optional[datetime] = None): now = when or datetime.now() + week, weekday = week_weekday_from_date(now.date()) - return self.filter(lesson__date_start__lte=now.date(), - lesson__date_end__gte=now.date(), - period__weekday=now.isoweekday(), - period__time_start__lte=now.time(), - period__time_end__gte=now.time()) + return self.filter( + lesson__date_start__lte=now.date(), + lesson__date_end__gte=now.date(), + period__weekday=now.isoweekday(), + period__time_start__lte=now.time(), + period__time_end__gte=now.time() + ).extra( + select={'_week': week.week} + ) def filter_group(self, group: Union[Group, int]): return self.filter( -- GitLab