From 0596b8b3bc5d686bb0a43a12a1eb1c2ca40048b0 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 18 Jun 2020 22:14:40 +0200 Subject: [PATCH] Add new helper functions for getting start and end datetime of time periods in templates --- aleksis/apps/chronos/models.py | 10 ++++++++++ .../apps/chronos/templatetags/week_helpers.py | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 2ad06ef8..1c35b674 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -75,6 +75,16 @@ class TimePeriod(ExtensibleModel): return wanted_week[self.weekday] + def get_datetime_start(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime: + """Get datetime of lesson start in a specific week.""" + day = self.get_date(week) + return datetime.combine(day, self.time_start) + + def get_datetime_end(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime: + """Get datetime of lesson end in a specific week.""" + day = self.get_date(week) + return datetime.combine(day, self.time_end) + @classmethod def get_next_relevant_day( cls, day: Optional[date] = None, time: Optional[time] = None, prev: bool = False diff --git a/aleksis/apps/chronos/templatetags/week_helpers.py b/aleksis/apps/chronos/templatetags/week_helpers.py index acfb3a3a..c9770317 100644 --- a/aleksis/apps/chronos/templatetags/week_helpers.py +++ b/aleksis/apps/chronos/templatetags/week_helpers.py @@ -1,4 +1,4 @@ -from datetime import date +from datetime import date, datetime from typing import Optional, Union from django import template @@ -35,6 +35,21 @@ def period_to_date(week: Union[CalendarWeek, int], period) -> date: return week_period_to_date(week, period) +@register.simple_tag +def period_to_time_start(week: Union[CalendarWeek, int], period) -> date: + return period.get_datetime_start(week) + + +@register.simple_tag +def period_to_time_end(week: Union[CalendarWeek, int], period) -> date: + return period.get_datetime_end(week) + + @register.simple_tag def today() -> date: return date.today() + + +@register.simple_tag +def now_datetime() -> datetime: + return datetime.now() -- GitLab