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

Add within_dates method and weekify at_time. Advances #33, #34.

parent d06b7314
No related branches found
No related tags found
No related merge requests found
...@@ -40,24 +40,31 @@ class LessonPeriodQuerySet(models.QuerySet): ...@@ -40,24 +40,31 @@ class LessonPeriodQuerySet(models.QuerySet):
select={'_week': wanted_week.week} 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): def on_day(self, day: date):
week, weekday = week_weekday_from_date(day) week, weekday = week_weekday_from_date(day)
return self.filter( return self.within_dates(day, day).filter(
lesson__date_start__lte=day, lesson__date_end__gte=day, period_weekday=weekday
period__weekday=weekday
).extra( ).extra(
select={'_week': week.week} select={'_week': week.week}
) )
def at_time(self, when: Optional[datetime] = None): def at_time(self, when: Optional[datetime] = None):
now = when or datetime.now() now = when or datetime.now()
week, weekday = week_weekday_from_date(now.date())
return self.filter(lesson__date_start__lte=now.date(), return self.filter(
lesson__date_end__gte=now.date(), lesson__date_start__lte=now.date(),
period__weekday=now.isoweekday(), lesson__date_end__gte=now.date(),
period__time_start__lte=now.time(), period__weekday=now.isoweekday(),
period__time_end__gte=now.time()) 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]): def filter_group(self, group: Union[Group, int]):
return self.filter( return self.filter(
......
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