From 687857a8c8a116c735fed16392cd2a6798c52ca8 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 21 Jan 2020 18:22:05 +0100 Subject: [PATCH] Merge get_prev_relevant_day to get_next_relevant_day by adding an extra attribute "prev" --- aleksis/apps/chronos/util/prev_next.py | 35 ++++++++++---------------- aleksis/apps/chronos/views.py | 4 +-- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/aleksis/apps/chronos/util/prev_next.py b/aleksis/apps/chronos/util/prev_next.py index 077a26de..9f736213 100644 --- a/aleksis/apps/chronos/util/prev_next.py +++ b/aleksis/apps/chronos/util/prev_next.py @@ -7,39 +7,30 @@ from django.utils import timezone from aleksis.apps.chronos.util.min_max import weekday_min_, weekday_max, time_max -def get_next_relevant_day(day: Optional[date] = None, time: Optional[time] = None) -> date: - """ Returns next day with lessons depending on date and time """ +def get_next_relevant_day(day: Optional[date] = None, time: Optional[time] = None, prev: bool = False) -> date: + """ Returns next (previous) day with lessons depending on date and time """ if day is None: day = timezone.now().date() - if time is not None: + if time is not None and not prev: if time > time_max: day += timedelta(days=1) cw = CalendarWeek.from_date(day) if day.weekday() > weekday_max: - cw += 1 - day = cw[weekday_min_] + if prev: + day = cw[weekday_max] + else: + cw += 1 + day = cw[weekday_min_] elif day.weekday() < weekday_min_: - day = cw[weekday_min_] + if prev: + cw -= 1 + day = cw[weekday_max] + else: + day = cw[weekday_min_] return day - -def get_prev_relevant_day(day: Optional[date] = None) -> date: - """ Returns previous day with lessons depending on date """ - - if day is None: - day = timezone.now().date() - - cw = CalendarWeek.from_date(day) - - if day.weekday() > weekday_max: - day = cw[weekday_max] - elif day.weekday() < weekday_min_: - cw -= 1 - day = cw[weekday_max] - - return day diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index 6841d735..64a4f9ea 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -23,14 +23,14 @@ from .util.min_max import ( weekday_min_, weekday_max ) -from .util.prev_next import get_prev_relevant_day, get_next_relevant_day +from .util.prev_next import get_next_relevant_day from .util.weeks import CalendarWeek, get_weeks_for_year def get_prev_next_by_day(day: date, url: str) -> Tuple[str, str]: """ Build URLs for previous/next day """ - day_prev = get_prev_relevant_day(day - timedelta(days=1)) + day_prev = get_next_relevant_day(day - timedelta(days=1), prev=True) day_next = get_next_relevant_day(day + timedelta(days=1)) url_prev = reverse(url, args=[day_prev.year, day_prev.month, day_prev.day]) -- GitLab