From 82f5c040df51c2729b91da3425591701800f988d Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 5 Aug 2020 13:05:39 +0200 Subject: [PATCH] Simplify URL template generation for week select and make it more resilient --- aleksis/apps/alsijil/urls.py | 6 ++++++ aleksis/apps/alsijil/util.py | 9 --------- aleksis/apps/alsijil/views.py | 14 ++++++-------- 3 files changed, 12 insertions(+), 17 deletions(-) delete mode 100644 aleksis/apps/alsijil/util.py diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index 49ccfd90c..7e7139c6c 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -11,7 +11,13 @@ urlpatterns = [ ), path("week/", views.week_view, name="week_view"), path("week/<int:year>/<int:week>/", views.week_view, name="week_view_by_week"), + path("week/year/cw/", views.week_view, name="week_view_placeholders"), path("week/<str:type_>/<int:id_>/", views.week_view, name="week_view"), + path( + "week/year/cw/<str:type_>/<int:id_>/", + views.week_view, + name="week_view_placeholders", + ), path( "week/<int:year>/<int:week>/<str:type_>/<int:id_>/", views.week_view, diff --git a/aleksis/apps/alsijil/util.py b/aleksis/apps/alsijil/util.py deleted file mode 100644 index da3580592..000000000 --- a/aleksis/apps/alsijil/util.py +++ /dev/null @@ -1,9 +0,0 @@ -from typing import List - - -def append_if_all(iterable: List, *args) -> List: - """Append args to a list if all args are true-like.""" - if all(args): - for a in args: - iterable.append(a) - return iterable diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index f97509307..9c90ede28 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -13,7 +13,6 @@ from django_tables2 import SingleTableView from reversion.views import RevisionMixin from rules.contrib.views import PermissionRequiredMixin -from aleksis.apps.alsijil.util import append_if_all from aleksis.apps.chronos.managers import TimetableType from aleksis.apps.chronos.models import LessonPeriod from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk @@ -308,16 +307,15 @@ def week_view( week_next = wanted_week + 1 args_prev = [week_prev.year, week_prev.week] args_next = [week_next.year, week_next.week] - args_dest = [wanted_week.year, wanted_week.week] - append_if_all(args_prev, type_, id_) - append_if_all(args_next, type_, id_) - append_if_all(args_dest, type_, id_) + args_dest = [] + if type_ and id_: + args_prev += [type_.value, id_] + args_next += [type_.value, id_] + args_dest += [type_.value, id_] context["week_select"] = { "year": wanted_week.year, - "dest": reverse("week_view_by_week", args=args_dest) - .replace(str(wanted_week.year), "year") - .replace(str(wanted_week.week), "cw"), + "dest": reverse("week_view_placeholders", args=args_dest), } context["url_prev"] = reverse("week_view_by_week", args=args_prev) -- GitLab