From 0709de408d5ae63abf7f4f2ea36b00d07247792a Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sun, 19 Jan 2020 14:07:22 +0100
Subject: [PATCH] Adapt URL schema of lessons_day to the generally used schema
 for dates

---
 aleksis/apps/chronos/urls.py  |  2 +-
 aleksis/apps/chronos/views.py | 28 ++++++++++++++--------------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py
index 45098f11..0bdd940f 100644
--- a/aleksis/apps/chronos/urls.py
+++ b/aleksis/apps/chronos/urls.py
@@ -10,7 +10,7 @@ urlpatterns = [
     path("timetable/<str:type_>/<int:pk>/<int:year>/<int:week>/", views.timetable, name="timetable_by_week"),
     path("timetable/<str:type_>/<int:pk>/<str:regular>/", views.timetable, name="timetable_regular"),
     path("lessons/", views.lessons_day, name="lessons_day"),
-    path("lessons/<when>/", views.lessons_day, name="lessons_day_by_date"),
+    path("lessons/<int:year>/<int:month>/<int:day>/", views.lessons_day, name="lessons_day_by_date"),
     path(
         "lessons/<int:id_>/<int:week>/substition/",
         views.edit_substitution,
diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py
index 7054da13..08b6678a 100644
--- a/aleksis/apps/chronos/views.py
+++ b/aleksis/apps/chronos/views.py
@@ -211,33 +211,33 @@ def timetable(
 
 
 @login_required
-def lessons_day(request: HttpRequest, when: Optional[str] = None) -> HttpResponse:
+def lessons_day(
+    request: HttpRequest,
+    year: Optional[int] = None,
+    month: Optional[int] = None,
+    day: Optional[int] = None,
+) -> HttpResponse:
     context = {}
 
-    if when:
-        day = datetime.strptime(when, "%Y-%m-%d").date()
+    if day:
+        wanted_day = timezone.datetime(year=year, month=month, day=day).date()
+        wanted_day = get_next_relevant_day(wanted_day)
     else:
-        day = date.today()
+        wanted_day = get_next_relevant_day(timezone.now().date(), datetime.now().time())
 
     # Get lessons
-    lesson_periods = LessonPeriod.objects.on_day(day)
+    lesson_periods = LessonPeriod.objects.on_day(wanted_day)
 
     # Build table
     lessons_table = LessonsTable(lesson_periods.all())
     RequestConfig(request).configure(lessons_table)
 
     context["lessons_table"] = lessons_table
-    context["day"] = day
+    context["day"] = wanted_day
     context["lesson_periods"] = lesson_periods
 
-    day_prev = day - timedelta(days=1)
-    day_next = day + timedelta(days=1)
-
-    context["url_prev"] = reverse(
-        "lessons_day_by_date", args=[day_prev.strftime("%Y-%m-%d")]
-    )
-    context["url_next"] = reverse(
-        "lessons_day_by_date", args=[day_next.strftime("%Y-%m-%d")]
+    context["url_prev"], context["url_next"] = get_prev_next_by_day(
+        wanted_day, "lessons_day_by_date"
     )
 
     return render(request, "chronos/lessons_day.html", context)
-- 
GitLab