summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMarcelo Galigniana <marcelogaligniana@gmail.com>2023-04-20 00:40:56 -0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-04-21 07:48:27 +0200
commit8a6c0203c4e92908c2b26ba54feba4ce7e76d081 (patch)
tree35898f92027d101b12d15a53131036291c92c4f8 /django
parentfb535e0a9033bd58d4bcb31876508e895c9b866d (diff)
downloaddjango-8a6c0203c4e92908c2b26ba54feba4ce7e76d081.tar.gz
Fixed #34488 -- Made ClearableFileInput preserve "Clear" checked attribute when form is invalid.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/templates/admin/widgets/clearable_file_input.html2
-rw-r--r--django/forms/widgets.py3
2 files changed, 4 insertions, 1 deletions
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 fe71ebdb06..ab35253a0d 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 %}<p class="file-upload">{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
<span class="clearable-file-input">
-<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"{% if widget.attrs.disabled %} disabled{% endif %}>
+<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"{% include "django/forms/widgets/attrs.html" %}>
<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label></span>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>{% if widget.is_initial %}</p>{% endif %}
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 3d6091c250..b4a9583364 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -433,6 +433,7 @@ class ClearableFileInput(FileInput):
initial_text = _("Currently")
input_text = _("Change")
template_name = "django/forms/widgets/clearable_file_input.html"
+ checked = False
def clear_checkbox_name(self, name):
"""
@@ -475,10 +476,12 @@ class ClearableFileInput(FileInput):
}
)
context["widget"]["attrs"].setdefault("disabled", False)
+ context["widget"]["attrs"]["checked"] = self.checked
return context
def value_from_datadict(self, data, files, name):
upload = super().value_from_datadict(data, files, name)
+ self.checked = self.clear_checkbox_name(name) in data
if not self.is_required and CheckboxInput().value_from_datadict(
data, files, self.clear_checkbox_name(name)
):