summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-10-30 09:27:57 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-10-31 06:41:10 +0100
commit9fa2d235c9b3ca6b0cd56e06456bf73d02814a8f (patch)
tree41e9fdc4ca894b8e1140886c6282f766eb5e5246
parent5045dab4f93b64106b3132c3644c06982f824073 (diff)
[5.1.x] Fixed #35876 -- Displayed non-ASCII fieldset names when rendering ModelAdmin.fieldsets.
Thank you to Namhong Kim for the report, and to Mariusz Felisiak and Marijke Luttekes for the review. Regression in 01ed59f753139afb514170ee7f7384c155ecbc2d. Backport of 2c029c718f45341cdd43ee094c24488743c633e6 from main.
-rw-r--r--django/contrib/admin/templates/admin/includes/fieldset.html10
-rw-r--r--docs/releases/5.1.3.txt3
-rw-r--r--tests/admin_inlines/tests.py4
-rw-r--r--tests/admin_views/admin.py1
-rw-r--r--tests/admin_views/tests.py13
5 files changed, 23 insertions, 8 deletions
diff --git a/django/contrib/admin/templates/admin/includes/fieldset.html b/django/contrib/admin/templates/admin/includes/fieldset.html
index a9d3f92702..c94d46fd64 100644
--- a/django/contrib/admin/templates/admin/includes/fieldset.html
+++ b/django/contrib/admin/templates/admin/includes/fieldset.html
@@ -1,8 +1,7 @@
-{% with name=fieldset.name|default:""|slugify %}
-<fieldset class="module aligned {{ fieldset.classes }}"{% if name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading"{% endif %}>
- {% if name %}
+<fieldset class="module aligned {{ fieldset.classes }}"{% if fieldset.name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ id_suffix }}-heading"{% endif %}>
+ {% if fieldset.name %}
{% if fieldset.is_collapsible %}<details><summary>{% endif %}
- <h{{ heading_level|default:2 }} id="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading" class="fieldset-heading">{{ fieldset.name }}</h{{ heading_level|default:2 }}>
+ <h{{ heading_level|default:2 }} id="{{ prefix }}-{{ id_prefix}}-{{ id_suffix }}-heading" class="fieldset-heading">{{ fieldset.name }}</h{{ heading_level|default:2 }}>
{% if fieldset.is_collapsible %}</summary>{% endif %}
{% endif %}
{% if fieldset.description %}
@@ -36,6 +35,5 @@
{% if not line.fields|length == 1 %}</div>{% endif %}
</div>
{% endfor %}
- {% if name and fieldset.is_collapsible %}</details>{% endif %}
+ {% if fieldset.name and fieldset.is_collapsible %}</details>{% endif %}
</fieldset>
-{% endwith %}
diff --git a/docs/releases/5.1.3.txt b/docs/releases/5.1.3.txt
index 0dd5b42cb8..2ef34bfc8a 100644
--- a/docs/releases/5.1.3.txt
+++ b/docs/releases/5.1.3.txt
@@ -17,3 +17,6 @@ Bugfixes
* Fixed a regression in Django 5.1 that prevented the use of DB-IP databases
with :class:`~django.contrib.gis.geoip2.GeoIP2` (:ticket:`35841`).
+
+* Fixed a regression in Django 5.1 where non-ASCII fieldset names were not
+ displayed when rendering admin fieldsets (:ticket:`35876`).
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index 2c148a49f0..4959afb02d 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -1785,7 +1785,7 @@ class TestInlineWithFieldsets(TestDataMixin, TestCase):
# The second and third have the same "Advanced options" name, but the
# second one has the "collapse" class.
for x, classes in ((1, ""), (2, "collapse")):
- heading_id = f"fieldset-0-advanced-options-{x}-heading"
+ heading_id = f"fieldset-0-{x}-heading"
with self.subTest(heading_id=heading_id):
self.assertContains(
response,
@@ -1830,7 +1830,7 @@ class TestInlineWithFieldsets(TestDataMixin, TestCase):
# Every fieldset defined for an inline's form.
for z, fieldset in enumerate(inline_admin_form):
if fieldset.name:
- heading_id = f"{prefix}-{y}-details-{z}-heading"
+ heading_id = f"{prefix}-{y}-{z}-heading"
self.assertContains(
response,
f'<fieldset class="module aligned {fieldset.classes}" '
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 0ea64d594a..5e14069bae 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -237,6 +237,7 @@ class ArticleAdmin(ArticleAdminWithExtraUrl):
"Some other fields",
{"classes": ("wide",), "fields": ("date", "section", "sub_section")},
),
+ ("이름", {"fields": ("another_section",)}),
)
# These orderings aren't particularly useful but show that expressions can
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 5a3e28f0e4..29ef894bc2 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -2508,6 +2508,19 @@ class AdminViewPermissionsTest(TestCase):
self.assertContains(
response, '<input type="submit" value="Save and view" name="_continue">'
)
+ self.assertContains(
+ response,
+ '<h2 id="fieldset-0-0-heading" class="fieldset-heading">Some fields</h2>',
+ )
+ self.assertContains(
+ response,
+ '<h2 id="fieldset-0-1-heading" class="fieldset-heading">'
+ "Some other fields</h2>",
+ )
+ self.assertContains(
+ response,
+ '<h2 id="fieldset-0-2-heading" class="fieldset-heading">이름</h2>',
+ )
post = self.client.post(
reverse("admin:admin_views_article_add"), add_dict, follow=False
)