From 382d993861276017abc8e8647a8c6145732dde84 Mon Sep 17 00:00:00 2001 From: ajarzyn <18590439+ajarzyn@users.noreply.github.com> Date: Thu, 6 Mar 2025 01:29:10 +0100 Subject: [PATCH] Bug fix: Submenus with spaces are not matched against url. --- example/accounts/menus.py | 4 ++++ example/accounts/urls.py | 1 + simple_menu/menu.py | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/example/accounts/menus.py b/example/accounts/menus.py index 099cf39..f2a4b2e 100644 --- a/example/accounts/menus.py +++ b/example/accounts/menus.py @@ -19,6 +19,10 @@ def profile_title(request): icon=f'{i}-circle') for i in range(1, 4) ] + +# Test sub menu with space +submenu_items.append(MenuItem(f"Page with space", reverse('accounts:space_test'))) + Menu.add_item("user", MenuItem("Subpages", reverse('accounts:subpage', kwargs={'i': 1}), icon="menu-app", diff --git a/example/accounts/urls.py b/example/accounts/urls.py index 0a6adf7..0ba5863 100644 --- a/example/accounts/urls.py +++ b/example/accounts/urls.py @@ -12,4 +12,5 @@ path('super/', views.SuperOnlyView.as_view(), name='super_only'), path("sub//", views.SubPageView.as_view(), name='subpage'), + path("space test", views.SubPageView.as_view(), name='space_test'), ] diff --git a/simple_menu/menu.py b/simple_menu/menu.py index eb55d63..0f03153 100644 --- a/simple_menu/menu.py +++ b/simple_menu/menu.py @@ -5,6 +5,8 @@ from django.conf import settings from django.utils.text import slugify +from urllib.parse import unquote_plus + class Menu: """ @@ -257,6 +259,6 @@ def match_url(self, request): if self.exact_url: if re.match(f"{self.url}$", request.path): matched = True - elif re.match("%s" % self.url, request.path): + elif re.match("%s" % unquote_plus(self.url), request.path): matched = True return matched