diff --git a/AUTHORS.rst b/AUTHORS.rst index 0f88e30..8aa7683 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -21,3 +21,4 @@ Developers * Roman Gladkov (@d1ffuz0r / d1fffuz0r@gmail.com) * Pau Rosello Van Schoor (@paurosello) * Wade Austin (@waustin) +* the5fire (@the5fire) diff --git a/MANIFEST.in b/MANIFEST.in index b70a3b3..f4ffdab 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,5 @@ include README.rst include LICENSE include AUTHORS.rst -include MANIFEST.in \ No newline at end of file +include MANIFEST.in +recursive-include djadmin2 *.html *.css *.js diff --git a/djadmin2/forms.py b/djadmin2/forms.py index d34d828..719e9c2 100644 --- a/djadmin2/forms.py +++ b/djadmin2/forms.py @@ -56,7 +56,7 @@ def _create_radioselect(original): return original create_new_widget = _create_widget( floppyforms.widgets.RadioSelect, - ('allow_multiple_selected',)) + ('choices', 'allow_multiple_selected',)) return create_new_widget(original) @@ -130,19 +130,21 @@ _django_to_floppyforms_widget = { django.forms.widgets.Select: _create_widget( floppyforms.widgets.Select, - ('allow_multiple_selected',)), + ('choices', 'allow_multiple_selected',)), django.forms.widgets.NullBooleanSelect: _create_widget( floppyforms.widgets.NullBooleanSelect, - ('allow_multiple_selected',)), + ('choices', 'allow_multiple_selected',)), django.forms.widgets.SelectMultiple: _create_widget( floppyforms.widgets.SelectMultiple, - ('allow_multiple_selected',)), + ('choices', 'allow_multiple_selected',)), django.forms.widgets.RadioSelect: _create_radioselect, django.forms.widgets.CheckboxSelectMultiple: - _create_widget(floppyforms.widgets.CheckboxSelectMultiple), + _create_widget( + floppyforms.widgets.CheckboxSelectMultiple, + ('choices', 'allow_multiple_selected',)), django.forms.widgets.MultiWidget: _create_widget( floppyforms.widgets.MultiWidget, diff --git a/example/blog/tests/test_modelforms.py b/example/blog/tests/test_modelforms.py index a797ed9..9e48b60 100644 --- a/example/blog/tests/test_modelforms.py +++ b/example/blog/tests/test_modelforms.py @@ -201,39 +201,71 @@ class GetFloppyformWidgetTest(TestCase): self.assertTrue(new_widget.check_test is check_test) def test_select_widget(self): + choices = ( + ('draft', 'Draft'), + ('public', 'Public'), + ) + self.assertExpectWidget( forms.widgets.Select(), floppyforms.widgets.Select) - widget = forms.widgets.Select() + widget = forms.widgets.Select(choices=choices) widget.allow_multiple_selected = True self.assertExpectWidget( widget, floppyforms.widgets.Select, - ('allow_multiple_selected',)) + ('choices', 'allow_multiple_selected',)) def test_nullbooleanselect_widget(self): self.assertExpectWidget( forms.widgets.NullBooleanSelect(), - floppyforms.widgets.NullBooleanSelect) + floppyforms.widgets.NullBooleanSelect, + ('choices', 'allow_multiple_selected',)) + + widget = forms.widgets.NullBooleanSelect() + widget.choices = list(widget.choices) + + value, label = widget.choices[0] + widget.choices[0] = value, 'Maybe' + + self.assertExpectWidget( + widget, + floppyforms.widgets.NullBooleanSelect, + ('choices', 'allow_multiple_selected',)) def test_selectmultiple_widget(self): + choices = ( + ('draft', 'Draft'), + ('public', 'Public'), + ) + self.assertExpectWidget( forms.widgets.SelectMultiple(), floppyforms.widgets.SelectMultiple) - widget = forms.widgets.SelectMultiple() + widget = forms.widgets.SelectMultiple(choices=choices) widget.allow_multiple_selected = False self.assertExpectWidget( widget, floppyforms.widgets.SelectMultiple, - ('allow_multiple_selected',)) + ('choices', 'allow_multiple_selected',)) def test_radioselect_widget(self): + choices = ( + ('draft', 'Draft'), + ('public', 'Public'), + ) + self.assertExpectWidget( forms.widgets.RadioSelect(), floppyforms.widgets.RadioSelect) + self.assertExpectWidget( + forms.widgets.RadioSelect(choices=choices), + floppyforms.widgets.RadioSelect, + ('choices', 'allow_multiple_selected',)) + widget = forms.widgets.RadioSelect(renderer='custom renderer') # don't overwrite widget with floppyform widget if a custom renderer # was used. We cannot copy this over since floppyform doesn't use the @@ -243,10 +275,20 @@ class GetFloppyformWidgetTest(TestCase): forms.widgets.RadioSelect) def test_checkboxselectmultiple_widget(self): + choices = ( + ('draft', 'Draft'), + ('public', 'Public'), + ) + self.assertExpectWidget( forms.widgets.CheckboxSelectMultiple(), floppyforms.widgets.CheckboxSelectMultiple) + self.assertExpectWidget( + forms.widgets.CheckboxSelectMultiple(choices=choices), + floppyforms.widgets.CheckboxSelectMultiple, + ('choices', 'allow_multiple_selected',)) + def test_multi_widget(self): self.assertExpectWidget( forms.widgets.MultiWidget([]),