From b45099eefb9a46264bcb8811dff6013cd1d0f6d6 Mon Sep 17 00:00:00 2001 From: Julien Phalip Date: Sat, 12 Nov 2011 23:07:51 +0000 Subject: [PATCH] Fixed #17190 -- Ensured that the `NullBooleanSelect` widget's options get lazily localized. Thanks to pennersr for the report and to kenth for the patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17091 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/forms/widgets.py | 4 +++- tests/regressiontests/forms/tests/widgets.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 5b50f37b67..8c1e20b179 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -552,7 +552,9 @@ class NullBooleanSelect(Select): A Select Widget intended to be used with NullBooleanField. """ def __init__(self, attrs=None): - choices = ((u'1', ugettext('Unknown')), (u'2', ugettext('Yes')), (u'3', ugettext('No'))) + choices = ((u'1', ugettext_lazy('Unknown')), + (u'2', ugettext_lazy('Yes')), + (u'3', ugettext_lazy('No'))) super(NullBooleanSelect, self).__init__(attrs, choices) def render(self, name, value, attrs=None, choices=()): diff --git a/tests/regressiontests/forms/tests/widgets.py b/tests/regressiontests/forms/tests/widgets.py index 2424bea903..b567ea370e 100644 --- a/tests/regressiontests/forms/tests/widgets.py +++ b/tests/regressiontests/forms/tests/widgets.py @@ -984,6 +984,10 @@ beatle J R Ringo False""") self.assertEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'') +class NullBooleanSelectLazyForm(Form): + """Form to test for lazy evaluation. Refs #17190""" + bool = BooleanField(widget=NullBooleanSelect()) + class FormsI18NWidgetsTestCase(TestCase): def setUp(self): super(FormsI18NWidgetsTestCase, self).setUp() @@ -1025,6 +1029,15 @@ class FormsI18NWidgetsTestCase(TestCase): w.is_localized = True self.assertEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'') + def test_nullbooleanselect(self): + """ + Ensure that the NullBooleanSelect widget's options are lazily + localized. + Refs #17190 + """ + f = NullBooleanSelectLazyForm() + self.assertEqual(f.fields['bool'].widget.render('id_bool', True), u'') + class SelectAndTextWidget(MultiWidget): """