summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2017-04-15 13:55:33 -0400
committerTim Graham <timograham@gmail.com>2017-04-20 10:06:34 -0400
commitaf1f986360dc6bb6e75e960dbc191707541128ac (patch)
tree19f6cf7d729cb8a454bb57df9cd9dc277a3bd338
parent43b4a1618ed85151494d68778a1bb6304ce1cb79 (diff)
Fixed #28059 -- Restored class attribute in <ul> of widgets that use multiple_input.html.
Regression in b52c73008a9d67e9ddbb841872dc15cdd3d6ee01
-rw-r--r--django/forms/jinja2/django/forms/widgets/multiple_input.html2
-rw-r--r--django/forms/templates/django/forms/widgets/multiple_input.html2
-rw-r--r--docs/releases/1.11.1.txt4
-rw-r--r--tests/forms_tests/widget_tests/test_radioselect.py15
4 files changed, 21 insertions, 2 deletions
diff --git a/django/forms/jinja2/django/forms/widgets/multiple_input.html b/django/forms/jinja2/django/forms/widgets/multiple_input.html
index 349db54104..21cd9b665d 100644
--- a/django/forms/jinja2/django/forms/widgets/multiple_input.html
+++ b/django/forms/jinja2/django/forms/widgets/multiple_input.html
@@ -1,4 +1,4 @@
-{% set id = widget.attrs.id %}<ul{% if id %} id="{{ id }}"{% endif %}>{% for group, options, index in widget.optgroups %}{% if group %}
+{% set id = widget.attrs.id %}<ul{% if id %} id="{{ id }}"{% endif %}{% if widget.attrs.class %} class="{{ widget.attrs.class }}"{% endif %}>{% for group, options, index in widget.optgroups %}{% if group %}
<li>{{ group }}<ul{% if id %} id="{{ id }}_{{ index }}"{% endif %}>{% endif %}{% for widget in options %}
<li>{% include widget.template_name %}</li>{% endfor %}{% if group %}
</ul></li>{% endif %}{% endfor %}
diff --git a/django/forms/templates/django/forms/widgets/multiple_input.html b/django/forms/templates/django/forms/widgets/multiple_input.html
index 2362aff4e6..0ba9942874 100644
--- a/django/forms/templates/django/forms/widgets/multiple_input.html
+++ b/django/forms/templates/django/forms/widgets/multiple_input.html
@@ -1,4 +1,4 @@
-{% with id=widget.attrs.id %}<ul{% if id %} id="{{ id }}"{% endif %}>{% for group, options, index in widget.optgroups %}{% if group %}
+{% with id=widget.attrs.id %}<ul{% if id %} id="{{ id }}"{% endif %}{% if widget.attrs.class %} class="{{ widget.attrs.class }}"{% endif %}>{% for group, options, index in widget.optgroups %}{% if group %}
<li>{{ group }}<ul{% if id %} id="{{ id }}_{{ index }}"{% endif %}>{% endif %}{% for option in options %}
<li>{% include option.template_name with widget=option %}</li>{% endfor %}{% if group %}
</ul></li>{% endif %}{% endfor %}
diff --git a/docs/releases/1.11.1.txt b/docs/releases/1.11.1.txt
index d60c9e33e4..53c43443aa 100644
--- a/docs/releases/1.11.1.txt
+++ b/docs/releases/1.11.1.txt
@@ -36,3 +36,7 @@ Bugfixes
* Allowed prefetch calls on managers with custom ``ModelIterable`` subclasses
(:ticket:`28096`).
+
+* Restored the output of the ``class`` attribute in the ``<ul>`` of widgets
+ that use the ``multiple_input.html`` template. This fixes
+ ``ModelAdmin.radio_fields`` with ``admin.HORIZONTAL`` (:ticket:`28059`).
diff --git a/tests/forms_tests/widget_tests/test_radioselect.py b/tests/forms_tests/widget_tests/test_radioselect.py
index 58b2fc408e..8ef3a17da5 100644
--- a/tests/forms_tests/widget_tests/test_radioselect.py
+++ b/tests/forms_tests/widget_tests/test_radioselect.py
@@ -84,3 +84,18 @@ class RadioSelectTest(WidgetTest):
</ul>
"""
self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'id': 'bar'}, html=html)
+
+ def test_class_attrs(self):
+ """
+ The <ul> in the multiple_input.html widget template include the class
+ attribute.
+ """
+ html = """
+ <ul class="bar">
+ <li><label><input checked type="radio" class="bar" value="J" name="beatle" /> John</label></li>
+ <li><label><input type="radio" class="bar" value="P" name="beatle" /> Paul</label></li>
+ <li><label><input type="radio" class="bar" value="G" name="beatle" /> George</label></li>
+ <li><label><input type="radio" class="bar" value="R" name="beatle" /> Ringo</label></li>
+ </ul>
+ """
+ self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'class': 'bar'}, html=html)