From 04b1a0fadc64383d1f959dce2b4b4d722ca215d0 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 22 Sep 2021 18:40:30 +0200 Subject: [PATCH] Support also dates for TimePeriod's methods get_datetime_start/_end --- CHANGELOG.rst | 8 ++++++++ aleksis/apps/chronos/models.py | 18 ++++++++++++++---- .../apps/chronos/templatetags/week_helpers.py | 8 ++++---- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0b8bd712..4f70bb71 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 07dc3fda..9d51ac7a 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 2f66d51e..cdba9b3f 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 -- GitLab