Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -484,6 +484,7 @@ answer newbie questions, and generally made Django that much better: oggy <ognjen.maric@gmail.com> Tomek Paczkowski <tomek@hauru.eu> Jens Page Guillaume Pannatier <guillaume.pannatier@gmail.com> Jay Parlar <parlar@gmail.com> Carlos Eduardo de Paula <carlosedp@gmail.com> John Paulett <john@paulett.org> Loading django/forms/extras/widgets.py +4 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class SelectDateWidget(Widget): day_field = '%s_day' year_field = '%s_year' def __init__(self, attrs=None, years=None, months=None): def __init__(self, attrs=None, years=None, months=None, empty_label=None): self.attrs = attrs or {} # Optional list or tuple of years to use in the "year" select box. Loading @@ -64,6 +64,9 @@ class SelectDateWidget(Widget): else: self.months = MONTHS if empty_label is not None: self.none_value = (0, empty_label) def render(self, name, value, attrs=None): try: year_val, month_val, day_val = value.year, value.month, value.day Loading docs/ref/forms/widgets.txt +12 −0 Original line number Diff line number Diff line Loading @@ -781,3 +781,15 @@ Composite widgets 5:_('may'), 6:_('jun'), 7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec') } .. attribute:: SelectDateWidget.empty_label .. versionadded:: 1.8 If the :class:`~django.forms.DateField` is not required, :class:`SelectDateWidget` will have an empty choice at the top of the list. You can change the text of this label (which is ``---`` by default) with the ``empty_label`` attribute:: # A custom empty label field1 = forms.DateField(widget=SelectDateWidget(empty_label="Nothing")) docs/releases/1.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,10 @@ Forms a form's :attr:`~django.forms.Form.label_suffix` while using shortcuts such as ``{{ form.as_p }}`` in templates. * :class:`~django.forms.extras.widgets.SelectDateWidget` now accepts an :attr:`~django.forms.extras.widgets.SelectDateWidget.empty_label` argument, which will override the top list choice label when :class:`~django.forms.DateField` is not required. Internationalization ^^^^^^^^^^^^^^^^^^^^ Loading tests/forms_tests/tests/test_extra.py +5 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,11 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): <option value="2013">2013</option> </select>""") w = SelectDateWidget(years=('2014',), empty_label='empty_label') # Rendering the default state with empty_label setted. self.assertInHTML('<option value="0">empty_label</option>', w.render('mydate', ''), count=3) a = GetDate({'mydate_month': '4', 'mydate_day': '1', 'mydate_year': '2008'}) self.assertTrue(a.is_valid()) self.assertEqual(a.cleaned_data['mydate'], datetime.date(2008, 4, 1)) Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -484,6 +484,7 @@ answer newbie questions, and generally made Django that much better: oggy <ognjen.maric@gmail.com> Tomek Paczkowski <tomek@hauru.eu> Jens Page Guillaume Pannatier <guillaume.pannatier@gmail.com> Jay Parlar <parlar@gmail.com> Carlos Eduardo de Paula <carlosedp@gmail.com> John Paulett <john@paulett.org> Loading
django/forms/extras/widgets.py +4 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class SelectDateWidget(Widget): day_field = '%s_day' year_field = '%s_year' def __init__(self, attrs=None, years=None, months=None): def __init__(self, attrs=None, years=None, months=None, empty_label=None): self.attrs = attrs or {} # Optional list or tuple of years to use in the "year" select box. Loading @@ -64,6 +64,9 @@ class SelectDateWidget(Widget): else: self.months = MONTHS if empty_label is not None: self.none_value = (0, empty_label) def render(self, name, value, attrs=None): try: year_val, month_val, day_val = value.year, value.month, value.day Loading
docs/ref/forms/widgets.txt +12 −0 Original line number Diff line number Diff line Loading @@ -781,3 +781,15 @@ Composite widgets 5:_('may'), 6:_('jun'), 7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec') } .. attribute:: SelectDateWidget.empty_label .. versionadded:: 1.8 If the :class:`~django.forms.DateField` is not required, :class:`SelectDateWidget` will have an empty choice at the top of the list. You can change the text of this label (which is ``---`` by default) with the ``empty_label`` attribute:: # A custom empty label field1 = forms.DateField(widget=SelectDateWidget(empty_label="Nothing"))
docs/releases/1.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,10 @@ Forms a form's :attr:`~django.forms.Form.label_suffix` while using shortcuts such as ``{{ form.as_p }}`` in templates. * :class:`~django.forms.extras.widgets.SelectDateWidget` now accepts an :attr:`~django.forms.extras.widgets.SelectDateWidget.empty_label` argument, which will override the top list choice label when :class:`~django.forms.DateField` is not required. Internationalization ^^^^^^^^^^^^^^^^^^^^ Loading
tests/forms_tests/tests/test_extra.py +5 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,11 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): <option value="2013">2013</option> </select>""") w = SelectDateWidget(years=('2014',), empty_label='empty_label') # Rendering the default state with empty_label setted. self.assertInHTML('<option value="0">empty_label</option>', w.render('mydate', ''), count=3) a = GetDate({'mydate_month': '4', 'mydate_day': '1', 'mydate_year': '2008'}) self.assertTrue(a.is_valid()) self.assertEqual(a.cleaned_data['mydate'], datetime.date(2008, 4, 1)) Loading