From 891cdf120a0751b71eb534e14f814f574904ec44 Mon Sep 17 00:00:00 2001 From: Tim Heap Date: Mon, 5 Aug 2013 10:01:49 -0400 Subject: [1.6.x] Fixed #20850 -- Added MultiWidget.needs_multipart_form Backport of 75c87e2d38 from master --- django/forms/widgets.py | 5 +++++ tests/forms_tests/tests/test_widgets.py | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 38d1b99b0d..d74710bcba 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -838,6 +838,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 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']), '
') + # 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', ''), '') -- cgit v1.3