From 8fd953f28abc95aee2e2f59c94d8c58af0d792d7 Mon Sep 17 00:00:00 2001 From: Johannes Maron Date: Wed, 6 Mar 2024 21:18:36 +0100 Subject: [PATCH] [5.0.x] Fixed #35273 -- Fixed rendering AdminFileWidget's attributes. Regression in 8a6c0203c4e92908c2b26ba54feba4ce7e76d081. Backport of e69019555d683fd6a831f87cb09e3deb86e4e7c7 from main --- .../admin/widgets/clearable_file_input.html | 2 +- docs/releases/5.0.4.txt | 4 +++ tests/admin_widgets/tests.py | 27 +++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/django/contrib/admin/templates/admin/widgets/clearable_file_input.html b/django/contrib/admin/templates/admin/widgets/clearable_file_input.html index ab35253a0d..8b42f192f1 100644 --- a/django/contrib/admin/templates/admin/widgets/clearable_file_input.html +++ b/django/contrib/admin/templates/admin/widgets/clearable_file_input.html @@ -1,6 +1,6 @@ {% if widget.is_initial %}

{{ widget.initial_text }}: {{ widget.value }}{% if not widget.required %} - + {% endif %}
{{ widget.input_text }}:{% endif %} {% if widget.is_initial %}

{% endif %} diff --git a/docs/releases/5.0.4.txt b/docs/releases/5.0.4.txt index d15c28d83d..9b2fd6b170 100644 --- a/docs/releases/5.0.4.txt +++ b/docs/releases/5.0.4.txt @@ -13,3 +13,7 @@ Bugfixes fields with expressions in ``db_default``. As a consequence, ``Model.full_clean()`` no longer validates for empty values in fields with ``db_default`` (:ticket:`35223`). + +* Fixed a regression in Django 5.0 where the ``AdminFileWidget`` could be + rendered with two ``id`` attributes on the "Clear" checkbox + (:ticket:`35273`). diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 75c546bcbf..abaed86384 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -590,6 +590,19 @@ class AdminFileWidgetTests(TestDataMixin, TestCase): '', ) + def test_render_with_attrs_id(self): + storage_url = default_storage.url("") + w = widgets.AdminFileWidget() + self.assertHTMLEqual( + w.render("test", self.album.cover_art, attrs={"id": "test_id"}), + f'

Currently: albums\hybrid_theory.jpg ' + '' + ' ' + '
' + 'Change:

', + ) + def test_render_required(self): widget = widgets.AdminFileWidget() widget.is_required = True @@ -618,6 +631,20 @@ class AdminFileWidgetTests(TestDataMixin, TestCase): }, ) + def test_render_checked(self): + storage_url = default_storage.url("") + widget = widgets.AdminFileWidget() + widget.checked = True + self.assertHTMLEqual( + widget.render("test", self.album.cover_art), + f'

Currently: albums\hybrid_theory.jpg ' + '' + '' + '
' + 'Change:

', + ) + def test_readonly_fields(self): """ File widgets should render as a link when they're marked "read only."