From 55f2c86a47bf8c7680bc4fcb5f04b05474022f8b Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Tue, 18 Apr 2023 15:52:25 +0200 Subject: [PATCH] Fix tabs not working with non-ASCII alphanumeric characters. #237 --- admin_interface/templates/admin/change_form.html | 12 ++++++------ admin_interface/templatetags/admin_interface_tags.py | 6 ++++++ pyproject.toml | 1 + requirements.txt | 1 + 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/admin_interface/templates/admin/change_form.html b/admin_interface/templates/admin/change_form.html index c8b34dc..5385857 100644 --- a/admin_interface/templates/admin/change_form.html +++ b/admin_interface/templates/admin/change_form.html @@ -18,14 +18,14 @@ {% if show_fieldsets_as_tabs %} {% for fieldset in adminform %} {% with fieldset.name|default_if_none:opts.verbose_name as tab_name %} - {% endwith %} {% endfor %} {% else %} {% with opts.verbose_name as tab_name %} - {% endwith %} @@ -34,7 +34,7 @@ {% if show_inlines_as_tabs %} {% for inline_admin_formset in inline_admin_formsets %} {% with inline_admin_formset.opts.verbose_name_plural as tab_name %} - {% endwith %} @@ -48,14 +48,14 @@ {% if show_fieldsets_as_tabs %} {% for fieldset in adminform %} {% with fieldset.name|default_if_none:opts.verbose_name as tab_name %} -
+
{% include "admin/includes/headerless_fieldset.html" %}
{% endwith %} {% endfor %} {% else %} {% with opts.verbose_name as tab_name %} -
+
{% for fieldset in adminform %} {% include "admin/includes/fieldset.html" %} {% endfor %} @@ -65,7 +65,7 @@ {% for inline_admin_formset in inline_admin_formsets %} {% with inline_admin_formset.opts.verbose_name_plural as tab_name %} -
+
{% get_admin_interface_inline_template inline_admin_formset.opts.template as inline_template %} {% include inline_template %}
diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index 83d2292..08b6b8d 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -7,6 +7,7 @@ from django.conf import settings from django.contrib.admin.utils import get_fields_from_path from django.urls import NoReverseMatch, reverse from django.utils import translation +from slugify import slugify from admin_interface.cache import get_cached_active_theme, set_cached_active_theme from admin_interface.models import Theme @@ -172,3 +173,8 @@ def admin_interface_use_changeform_tabs(adminform, inline_forms): has_inline_tabs = theme.show_inlines_as_tabs and len(inline_forms) > 0 has_tabs = has_fieldset_tabs or has_inline_tabs return has_tabs + + +@register.filter +def admin_interface_slugify(name): + return slugify(str(name or "")) diff --git a/pyproject.toml b/pyproject.toml index 012ed75..e8b932c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ classifiers = [ ] dependencies = [ "django-colorfield >= 0.8.0, < 1.0.0", + "python-slugify >= 7.0.0, < 9.0.0", ] dynamic = ["version"] maintainers = [ diff --git a/requirements.txt b/requirements.txt index 08ea0ef..fb7bf11 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ django >= 2.2 django-colorfield == 0.8.0 +python-slugify == 8.0.1