Loading django/forms/widgets.py +5 −0 Original line number Diff line number Diff line Loading @@ -739,6 +739,11 @@ class MultiWidget(Widget): return media media = property(_get_media) def __deepcopy__(self, memo): obj = super(MultiWidget, self).__deepcopy__(memo) obj.widgets = copy.deepcopy(self.widgets) return obj class SplitDateTimeWidget(MultiWidget): """ A Widget that splits datetime input into two <input type="text"> boxes. Loading tests/regressiontests/forms/tests.py +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ from media import media_tests from fields import FieldsTests from validators import TestFieldWithValidators from widgets import WidgetTests __test__ = { 'extra_tests': extra_tests, Loading tests/regressiontests/forms/widgets.py +40 −0 Original line number Diff line number Diff line Loading @@ -1269,3 +1269,43 @@ u'<input type="hidden" name="date_0" value="17.09.2007" /><input type="hidden" n """ from django.utils import copycompat as copy from unittest import TestCase from django import forms class SelectAndTextWidget(forms.MultiWidget): """ MultiWidget subclass """ def __init__(self, choices=[]): widgets = [ forms.RadioSelect(choices=choices), forms.TextInput ] super(SelectAndTextWidget, self).__init__(widgets) def _set_choices(self, choices): """ When choices are set for this widget, we want to pass those along to the Select widget """ self.widgets[0].choices = choices def _get_choices(self): """ The choices for this widget are the Select widget's choices """ return self.widgets[0].choices choices = property(_get_choices, _set_choices) class WidgetTests(TestCase): def test_12048(self): # See ticket #12048. w1 = SelectAndTextWidget(choices=[1,2,3]) w2 = copy.deepcopy(w1) w2.choices = [4,5,6] # w2 ought to be independent of w1, since MultiWidget ought # to make a copy of its sub-widgets when it is copied. self.assertEqual(w1.choices, [1,2,3]) Loading
django/forms/widgets.py +5 −0 Original line number Diff line number Diff line Loading @@ -739,6 +739,11 @@ class MultiWidget(Widget): return media media = property(_get_media) def __deepcopy__(self, memo): obj = super(MultiWidget, self).__deepcopy__(memo) obj.widgets = copy.deepcopy(self.widgets) return obj class SplitDateTimeWidget(MultiWidget): """ A Widget that splits datetime input into two <input type="text"> boxes. Loading
tests/regressiontests/forms/tests.py +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ from media import media_tests from fields import FieldsTests from validators import TestFieldWithValidators from widgets import WidgetTests __test__ = { 'extra_tests': extra_tests, Loading
tests/regressiontests/forms/widgets.py +40 −0 Original line number Diff line number Diff line Loading @@ -1269,3 +1269,43 @@ u'<input type="hidden" name="date_0" value="17.09.2007" /><input type="hidden" n """ from django.utils import copycompat as copy from unittest import TestCase from django import forms class SelectAndTextWidget(forms.MultiWidget): """ MultiWidget subclass """ def __init__(self, choices=[]): widgets = [ forms.RadioSelect(choices=choices), forms.TextInput ] super(SelectAndTextWidget, self).__init__(widgets) def _set_choices(self, choices): """ When choices are set for this widget, we want to pass those along to the Select widget """ self.widgets[0].choices = choices def _get_choices(self): """ The choices for this widget are the Select widget's choices """ return self.widgets[0].choices choices = property(_get_choices, _set_choices) class WidgetTests(TestCase): def test_12048(self): # See ticket #12048. w1 = SelectAndTextWidget(choices=[1,2,3]) w2 = copy.deepcopy(w1) w2.choices = [4,5,6] # w2 ought to be independent of w1, since MultiWidget ought # to make a copy of its sub-widgets when it is copied. self.assertEqual(w1.choices, [1,2,3])