diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py index 45098f11ca7e8228d29dcde8634da3899cc4b2fb..0bdd940f486ed8ea3530483e53d24fd97ce6687f 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 7054da1332d576b4feccc56f49c6f9854c61b2fd..08b6678ab623d457ae9518269d399ad5df83f809 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)