From c7f9edc7b93b95ce5727f637a1e59a247e52e7d9 Mon Sep 17 00:00:00 2001 From: Will Barton Date: Fri, 5 Jul 2024 13:38:15 -0400 Subject: [PATCH 1/2] Fix non-alphanumeric characters in flag names As @chosak notes in #73, the admin URL patterns prevented creating flags that didn't match `[\w\-]`. This change fixes that by switching from `re_path` to `path` for those patterns, simplifying them and making them more readable. Fixes #73 --- wagtailflags/wagtail_hooks.py | 47 ++++++++++++++--------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/wagtailflags/wagtail_hooks.py b/wagtailflags/wagtail_hooks.py index 49239a1..4623d45 100644 --- a/wagtailflags/wagtail_hooks.py +++ b/wagtailflags/wagtail_hooks.py @@ -1,6 +1,5 @@ -import django from django.templatetags.static import static -from django.urls import include, re_path, reverse +from django.urls import include, path, reverse from django.utils.html import format_html from wagtail import hooks @@ -22,47 +21,37 @@ def register_flags_menu(): @hooks.register("register_admin_urls") def register_flag_admin_urls(): flagpatterns = [ - re_path(r"^$", views.index, name="list"), - re_path(r"^create/$", views.create_flag, name="create_flag"), - re_path(r"^(?P[\w\-]+)/$", views.flag_index, name="flag_index"), - re_path( - r"^(?P[\w\-]+)/delete/$", + path("", views.index, name="list"), + path("create/", views.create_flag, name="create_flag"), + path("/", views.flag_index, name="flag_index"), + path( + "/delete/", views.delete_flag, name="delete_flag", ), - re_path( - r"^(?P[\w\-]+)/create/$", + path( + "/create/", views.edit_condition, name="create_condition", ), - re_path( - r"^(?P[\w\-]+)/(?P\d+)/$", + path( + "//", views.edit_condition, name="edit_condition", ), - re_path( - r"^(?P[\w\-]+)/(?P\d+)/delete/$", + path( + "//delete/", views.delete_condition, name="delete_condition", ), ] - if django.VERSION >= (1, 10): # pragma: no cover - urlpatterns = [ - re_path( - r"^flags/", - include( - (flagpatterns, "wagtailflags"), namespace="wagtailflags" - ), - ) - ] - else: # pragma: no cover; fallback for Django < 1.10 - urlpatterns = [ - re_path( - r"^flags/", - include((flagpatterns, "wagtailflags", "wagtailflags")), - ) - ] + urlpatterns = [ + path( + "flags/", + include((flagpatterns, "wagtailflags"), namespace="wagtailflags"), + ) + ] return urlpatterns From 40171447d1134be3c97969a4d8a16401166d9b53 Mon Sep 17 00:00:00 2001 From: Will Barton Date: Fri, 5 Jul 2024 14:40:36 -0400 Subject: [PATCH 2/2] Use a slug field to ensure URL-friendliness --- wagtailflags/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wagtailflags/forms.py b/wagtailflags/forms.py index 302f90f..0d90c43 100644 --- a/wagtailflags/forms.py +++ b/wagtailflags/forms.py @@ -6,7 +6,7 @@ class NewFlagForm(forms.ModelForm): - name = forms.CharField(label="Name", required=True) + name = forms.SlugField(label="Name", required=True) def clean_name(self): name = self.cleaned_data["name"]