diff options
| -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") | 
