diff --git a/aleksis/apps/chronos/util/prev_next.py b/aleksis/apps/chronos/util/prev_next.py index 077a26de80585f27ecb06de3efe54ec46b3487d3..9f736213968c08f21ba4e952cdb5d7da18db8139 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 6841d735f96ba61119742869dec94d2944404603..64a4f9ea78f4720845ff6f869c850777c3725788 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])