diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0b8bd7127d4559a8e386c96c2ae5347646c9fb7c..4f70bb719f117ac1654f2949afdb3e3d5382dc42 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,14 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog`_, and this project adheres to `Semantic Versioning`_. +Unreleased +---------- + +Changed +~~~~~~~ + +* Support dates for ``TimePeriod.get_datetime_start`` and ``TimePeriod.get_datetime_end``. + `2.0rc2`_ - 2021-08-01 ---------- diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 07dc3fda0bd8429f7c335093bbe0b2ae3a07b723..9d51ac7a5678c2c71d58c951a28b1904d2164f64 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -161,14 +161,24 @@ class TimePeriod(ValidityRangeRelatedExtensibleModel): return wanted_week[self.weekday] - def get_datetime_start(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime: + def get_datetime_start( + self, date_ref: Optional[Union[CalendarWeek, int, date]] = None + ) -> datetime: """Get datetime of lesson start in a specific week.""" - day = self.get_date(week) + if isinstance(date_ref, date): + day = date_ref + else: + day = self.get_date(date_ref) return datetime.combine(day, self.time_start) - def get_datetime_end(self, week: Optional[Union[CalendarWeek, int]] = None) -> datetime: + def get_datetime_end( + self, date_ref: Optional[Union[CalendarWeek, int, date]] = None + ) -> datetime: """Get datetime of lesson end in a specific week.""" - day = self.get_date(week) + if isinstance(date_ref, date): + day = date_ref + else: + day = self.get_date(date_ref) return datetime.combine(day, self.time_end) @classmethod diff --git a/aleksis/apps/chronos/templatetags/week_helpers.py b/aleksis/apps/chronos/templatetags/week_helpers.py index 2f66d51e449c2a0d46f53700b32b79e4b53fc3fa..cdba9b3f014913a2525b3ca59bfc514dc0e98ef1 100644 --- a/aleksis/apps/chronos/templatetags/week_helpers.py +++ b/aleksis/apps/chronos/templatetags/week_helpers.py @@ -36,13 +36,13 @@ def period_to_date(week: CalendarWeek, period) -> date: @register.simple_tag -def period_to_time_start(week: CalendarWeek, period) -> date: - return period.get_datetime_start(week) +def period_to_time_start(date_ref: Union[CalendarWeek, int, date], period) -> date: + return period.get_datetime_start(date_ref) @register.simple_tag -def period_to_time_end(week: Union[CalendarWeek, int], period) -> date: - return period.get_datetime_end(week) +def period_to_time_end(date_ref: Union[CalendarWeek, int, date], period) -> date: + return period.get_datetime_end(date_ref) @register.simple_tag