diff options
author | 2021-04-16 16:36:28 +0300 | |
---|---|---|
committer | 2021-05-03 20:19:50 +0300 | |
commit | 1046fc5823e81672fec8ed55c0a974ea95837f0a (patch) | |
tree | 105adf437f17c73124376df1fcd966ee37857554 | |
parent | Add code jam pages redirects (diff) |
Migrate redirections from settings.py -> redirects.yaml
-rw-r--r-- | pydis_site/apps/redirect/redirects.yaml | 53 | ||||
-rw-r--r-- | pydis_site/apps/redirect/tests.py | 13 | ||||
-rw-r--r-- | pydis_site/apps/redirect/urls.py | 9 | ||||
-rw-r--r-- | pydis_site/settings.py | 35 |
4 files changed, 66 insertions, 44 deletions
diff --git a/pydis_site/apps/redirect/redirects.yaml b/pydis_site/apps/redirect/redirects.yaml new file mode 100644 index 00000000..546e24ae --- /dev/null +++ b/pydis_site/apps/redirect/redirects.yaml @@ -0,0 +1,53 @@ +# Resources +resources_index_redirect: + original_path: pages/resources/ + redirect_route: "resources:index" + +resources_resources_redirect: + original_path: pages/resources/<str:category>/ + redirect_route: "resources:resources" + +# Events +events_index_redirect: + original_path: pages/events/ + redirect_route: "events:index" + +events_code_jams_index_redirect: + original_path: pages/code-jams/ + redirect_route: "events:page" + redirect_arguments: ["code-jams"] + +events_code_jams_one_redirect: + original_path: pages/code-jams/code-jam-1-snakes-bot/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/1"] + +events_code_jams_two_redirect: + original_path: pages/code-jams/code-jam-2/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/2"] + +events_code_jams_three_redirect: + original_path: pages/code-jams/code-jam-3/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/3"] + +events_code_jams_four_redirect: + original_path: pages/code-jams/code-jam-4/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/4"] + +events_code_jams_five_redirect: + original_path: pages/code-jams/code-jam-5/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/5"] + +events_code_jams_six_redirect: + original_path: pages/code-jams/code-jam-6/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/6"] + +events_code_jams_seven_redirect: + original_path: pages/code-jams/code-jam-7/ + redirect_route: "events:page" + redirect_arguments: ["code-jams/7"] diff --git a/pydis_site/apps/redirect/tests.py b/pydis_site/apps/redirect/tests.py index a4bab933..ac60d1c8 100644 --- a/pydis_site/apps/redirect/tests.py +++ b/pydis_site/apps/redirect/tests.py @@ -1,3 +1,4 @@ +import yaml from django.conf import settings from django.test import TestCase from django.urls import reverse @@ -16,12 +17,12 @@ class RedirectTests(TestCase): 1. Redirects only once. 2. Redirects to right URL. """ - for original_path, (redirect_route, name, static_args) in settings.REDIRECTIONS.items(): + for name, data in yaml.safe_load(settings.REDIRECTIONS_PATH.read_text()).items(): with self.subTest( - original_path=original_path, - redirect_route=redirect_route, + original_path=data["original_path"], + redirect_route=data["redirect_route"], name=name, - static_args=static_args, + redirect_arguments=tuple(data.get("redirect_arguments", ())), args=TESTING_ARGUMENTS.get(name, ()) ): resp = self.client.get( @@ -36,8 +37,8 @@ class RedirectTests(TestCase): self.assertRedirects( resp, reverse( - f"home:{redirect_route}", - args=TESTING_ARGUMENTS.get(name, ()) + static_args + f"home:{data['redirect_route']}", + args=TESTING_ARGUMENTS.get(name, ()) + tuple(data.get("redirect_arguments", ())) ), status_code=301 ) diff --git a/pydis_site/apps/redirect/urls.py b/pydis_site/apps/redirect/urls.py index 747c6bf4..d94a1ab7 100644 --- a/pydis_site/apps/redirect/urls.py +++ b/pydis_site/apps/redirect/urls.py @@ -1,3 +1,4 @@ +import yaml from django.conf import settings from django.urls import path @@ -6,12 +7,12 @@ from pydis_site.apps.redirect.views import CustomRedirectView app_name = "redirect" urlpatterns = [ path( - original, + data["original_path"], CustomRedirectView.as_view( - pattern_name=redirect_route, - static_args=params + pattern_name=data["redirect_route"], + static_args=tuple(data.get("redirect_arguments", ())) ), name=name ) - for original, (redirect_route, name, params) in settings.REDIRECTIONS.items() + for name, data in yaml.safe_load(settings.REDIRECTIONS_PATH.read_text()).items() ] diff --git a/pydis_site/settings.py b/pydis_site/settings.py index f6ba42cd..65bd8e7a 100644 --- a/pydis_site/settings.py +++ b/pydis_site/settings.py @@ -292,37 +292,4 @@ EVENTS_PAGES_PATH = Path(BASE_DIR, "pydis_site", "templates", "events", "pages") # Path for content pages CONTENT_PAGES_PATH = Path(BASE_DIR, "pydis_site", "apps", "content", "resources") -# Define redirections here so these can be used for URLs and tests. -# Format: "original-path/": ( -# "route:name", "redirection_route_name", ("destination", "args") -# ) -REDIRECTIONS = { - # Resources - "pages/resources/": ("resources:index", "resources_index_redirect", ()), - "pages/resources/<str:category>/": ("resources:resources", "resources_resources_redirect", ()), - - # Events - "pages/events/": ("events:index", "events_index_redirect", ()), - "pages/code-jams/": ("events:page", "events_code_jams_index_redirect", ("code-jams",)), - "pages/code-jams/code-jam-1-snakes-bot/": ( - "events:page", "events_code_jams_one_redirect", ("code-jams/1",) - ), - "pages/code-jams/code-jam-2/": ( - "events:page", "events_code_jams_two_redirect", ("code-jams/2",) - ), - "pages/code-jams/code-jam-3/": ( - "events:page", "events_code_jams_three_redirect", ("code-jams/3",) - ), - "pages/code-jams/code-jam-4/": ( - "events:page", "events_code_jams_four_redirect", ("code-jams/4",) - ), - "pages/code-jams/code-jam-5/": ( - "events:page", "events_code_jams_five_redirect", ("code-jams/5",) - ), - "pages/code-jams/code-jam-6/": ( - "events:page", "events_code_jams_five_redirect", ("code-jams/6",) - ), - "pages/code-jams/code-jam-7/": ( - "events:page", "events_code_jams_five_redirect", ("code-jams/7",) - ), -} +REDIRECTIONS_PATH = Path(BASE_DIR, "pydis_site", "apps", "redirect", "redirects.yaml") |