summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Heap <tim@ionata.com.au>2013-08-05 10:01:49 -0400
committerTim Graham <timograham@gmail.com>2013-08-05 10:02:28 -0400
commit75c87e2d38b181163a61ea99f2a17273274a3a2b (patch)
treecb2395075103cdac8924d48792d8cef52a0cb5ab
parent6d88d47be6d37234aab86d0e863e371f28347d12 (diff)
Fixed #20850 -- Added MultiWidget.needs_multipart_form
-rw-r--r--django/forms/widgets.py5
-rw-r--r--tests/forms_tests/tests/test_widgets.py8
2 files changed, 13 insertions, 0 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 784ccda159..0a5059a9c2 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -840,6 +840,11 @@ class MultiWidget(Widget):
obj.widgets = copy.deepcopy(self.widgets)
return obj
+ @property
+ def needs_multipart_form(self):
+ return any(w.needs_multipart_form for w in self.widgets)
+
+
class SplitDateTimeWidget(MultiWidget):
"""
A Widget that splits datetime input into two <input type="text"> boxes.
diff --git a/tests/forms_tests/tests/test_widgets.py b/tests/forms_tests/tests/test_widgets.py
index 4c566dc8e4..06ee2d6c53 100644
--- a/tests/forms_tests/tests/test_widgets.py
+++ b/tests/forms_tests/tests/test_widgets.py
@@ -849,6 +849,14 @@ beatle J R Ringo False""")
w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})), attrs={'id': 'bar'})
self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />')
+ # Test needs_multipart_form=True if any widget needs it
+ w = MyMultiWidget(widgets=(TextInput(), FileInput()))
+ self.assertTrue(w.needs_multipart_form)
+
+ # Test needs_multipart_form=False if no widget needs it
+ w = MyMultiWidget(widgets=(TextInput(), TextInput()))
+ self.assertFalse(w.needs_multipart_form)
+
def test_splitdatetime(self):
w = SplitDateTimeWidget()
self.assertHTMLEqual(w.render('date', ''), '<input type="text" name="date_0" /><input type="text" name="date_1" />')