mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Merge pull request #1084 from erikr/master
Fixed #13546 -- Easier handling of localize field options in ModelForm
This commit is contained in:
commit
16683f29ea
6 changed files with 114 additions and 21 deletions
|
@ -92,6 +92,41 @@ class OverrideCleanTests(TestCase):
|
|||
self.assertEqual(form.instance.left, 1)
|
||||
|
||||
|
||||
|
||||
class PartiallyLocalizedTripleForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Triple
|
||||
localized_fields = ('left', 'right',)
|
||||
|
||||
|
||||
class FullyLocalizedTripleForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Triple
|
||||
localized_fields = "__all__"
|
||||
|
||||
class LocalizedModelFormTest(TestCase):
|
||||
def test_model_form_applies_localize_to_some_fields(self):
|
||||
f = PartiallyLocalizedTripleForm({'left': 10, 'middle': 10, 'right': 10})
|
||||
self.assertTrue(f.is_valid())
|
||||
self.assertTrue(f.fields['left'].localize)
|
||||
self.assertFalse(f.fields['middle'].localize)
|
||||
self.assertTrue(f.fields['right'].localize)
|
||||
|
||||
def test_model_form_applies_localize_to_all_fields(self):
|
||||
f = FullyLocalizedTripleForm({'left': 10, 'middle': 10, 'right': 10})
|
||||
self.assertTrue(f.is_valid())
|
||||
self.assertTrue(f.fields['left'].localize)
|
||||
self.assertTrue(f.fields['middle'].localize)
|
||||
self.assertTrue(f.fields['right'].localize)
|
||||
|
||||
def test_model_form_refuses_arbitrary_string(self):
|
||||
with self.assertRaises(TypeError):
|
||||
class BrokenLocalizedTripleForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Triple
|
||||
localized_fields = "foo"
|
||||
|
||||
|
||||
# Regression test for #12960.
|
||||
# Make sure the cleaned_data returned from ModelForm.clean() is applied to the
|
||||
# model instance.
|
||||
|
|
|
@ -273,6 +273,7 @@ class UserSiteForm(forms.ModelForm):
|
|||
'id': CustomWidget,
|
||||
'data': CustomWidget,
|
||||
}
|
||||
localized_fields = ('data',)
|
||||
|
||||
|
||||
class Callback(object):
|
||||
|
@ -297,19 +298,23 @@ class FormfieldCallbackTests(TestCase):
|
|||
form = Formset().forms[0]
|
||||
self.assertTrue(isinstance(form['id'].field.widget, CustomWidget))
|
||||
self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))
|
||||
self.assertFalse(form.fields['id'].localize)
|
||||
self.assertTrue(form.fields['data'].localize)
|
||||
|
||||
def test_modelformset_factory_default(self):
|
||||
Formset = modelformset_factory(UserSite, form=UserSiteForm)
|
||||
form = Formset().forms[0]
|
||||
self.assertTrue(isinstance(form['id'].field.widget, CustomWidget))
|
||||
self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))
|
||||
self.assertFalse(form.fields['id'].localize)
|
||||
self.assertTrue(form.fields['data'].localize)
|
||||
|
||||
def assertCallbackCalled(self, callback):
|
||||
id_field, user_field, data_field = UserSite._meta.fields
|
||||
expected_log = [
|
||||
(id_field, {'widget': CustomWidget}),
|
||||
(user_field, {}),
|
||||
(data_field, {'widget': CustomWidget}),
|
||||
(data_field, {'widget': CustomWidget, 'localize': True}),
|
||||
]
|
||||
self.assertEqual(callback.log, expected_log)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue