Skip to content

Commit

Permalink
Fixed #20850 -- Added MultiWidget.needs_multipart_form
Browse files Browse the repository at this point in the history
  • Loading branch information
askeyt authored and timgraham committed Aug 5, 2013
1 parent 6d88d47 commit 75c87e2
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
5 changes: 5 additions & 0 deletions django/forms/widgets.py
Expand Up @@ -840,6 +840,11 @@ def __deepcopy__(self, memo):
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.
Expand Down
8 changes: 8 additions & 0 deletions tests/forms_tests/tests/test_widgets.py
Expand Up @@ -849,6 +849,14 @@ def format_output(self, rendered_widgets):
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" />')
Expand Down

0 comments on commit 75c87e2

Please sign in to comment.