mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	Fixed #13970 -- Made SelectDateWidget use the standard widget is_required attribute
Thanks mitar for the report and Tim Graham for the review.
This commit is contained in:
		| @@ -53,9 +53,8 @@ class SelectDateWidget(Widget): | |||||||
|     day_field = '%s_day' |     day_field = '%s_day' | ||||||
|     year_field = '%s_year' |     year_field = '%s_year' | ||||||
|  |  | ||||||
|     def __init__(self, attrs=None, years=None, required=True, months=None): |     def __init__(self, attrs=None, years=None, months=None): | ||||||
|         self.attrs = attrs or {} |         self.attrs = attrs or {} | ||||||
|         self.required = required |  | ||||||
|  |  | ||||||
|         # Optional list or tuple of years to use in the "year" select box. |         # Optional list or tuple of years to use in the "year" select box. | ||||||
|         if years: |         if years: | ||||||
| @@ -139,7 +138,7 @@ class SelectDateWidget(Widget): | |||||||
|             id_ = self.attrs['id'] |             id_ = self.attrs['id'] | ||||||
|         else: |         else: | ||||||
|             id_ = 'id_%s' % name |             id_ = 'id_%s' % name | ||||||
|         if not (self.required and val): |         if not self.is_required: | ||||||
|             choices.insert(0, self.none_value) |             choices.insert(0, self.none_value) | ||||||
|         local_attrs = self.build_attrs(id=field % id_) |         local_attrs = self.build_attrs(id=field % id_) | ||||||
|         s = Select(choices=choices) |         s = Select(choices=choices) | ||||||
|   | |||||||
| @@ -613,6 +613,11 @@ Miscellaneous | |||||||
|   you relied on the default field ordering while having fields defined on both |   you relied on the default field ordering while having fields defined on both | ||||||
|   the current class *and* on a parent ``Form``. |   the current class *and* on a parent ``Form``. | ||||||
|  |  | ||||||
|  | * The ``required`` argument of | ||||||
|  |   :class:`~django.forms.extras.widgets.SelectDateWidget` has been removed. | ||||||
|  |   This widget now respects the form field's ``is_required`` attribute like | ||||||
|  |   other widgets. | ||||||
|  |  | ||||||
| * :meth:`~django.db.models.query.QuerySet.select_related` now chains in the | * :meth:`~django.db.models.query.QuerySet.select_related` now chains in the | ||||||
|   same way as other similar calls like ``prefetch_related``. That is, |   same way as other similar calls like ``prefetch_related``. That is, | ||||||
|   ``select_related('foo', 'bar')`` is equivalent to |   ``select_related('foo', 'bar')`` is equivalent to | ||||||
|   | |||||||
| @@ -26,10 +26,6 @@ class GetDate(Form): | |||||||
|     mydate = DateField(widget=SelectDateWidget) |     mydate = DateField(widget=SelectDateWidget) | ||||||
|  |  | ||||||
|  |  | ||||||
| class GetNotRequiredDate(Form): |  | ||||||
|     mydate = DateField(widget=SelectDateWidget, required=False) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class GetDateShowHiddenInitial(Form): | class GetDateShowHiddenInitial(Form): | ||||||
|     mydate = DateField(widget=SelectDateWidget, show_hidden_initial=True) |     mydate = DateField(widget=SelectDateWidget, show_hidden_initial=True) | ||||||
|  |  | ||||||
| @@ -41,6 +37,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
|  |  | ||||||
|     # The forms library comes with some extra, higher-level Field and Widget |     # The forms library comes with some extra, higher-level Field and Widget | ||||||
|     def test_selectdate(self): |     def test_selectdate(self): | ||||||
|  |         self.maxDiff = None | ||||||
|         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016')) |         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016')) | ||||||
|  |  | ||||||
|         # Rendering the default state. |         # Rendering the default state. | ||||||
| @@ -114,6 +111,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
|  |  | ||||||
|         # Rendering a string value. |         # Rendering a string value. | ||||||
|         self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """<select name="mydate_month" id="id_mydate_month"> |         self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """<select name="mydate_month" id="id_mydate_month"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="1">January</option> | <option value="1">January</option> | ||||||
| <option value="2">February</option> | <option value="2">February</option> | ||||||
| <option value="3">March</option> | <option value="3">March</option> | ||||||
| @@ -128,6 +126,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
| <option value="12">December</option> | <option value="12">December</option> | ||||||
| </select> | </select> | ||||||
| <select name="mydate_day" id="id_mydate_day"> | <select name="mydate_day" id="id_mydate_day"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="1">1</option> | <option value="1">1</option> | ||||||
| <option value="2">2</option> | <option value="2">2</option> | ||||||
| <option value="3">3</option> | <option value="3">3</option> | ||||||
| @@ -161,6 +160,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
| <option value="31">31</option> | <option value="31">31</option> | ||||||
| </select> | </select> | ||||||
| <select name="mydate_year" id="id_mydate_year"> | <select name="mydate_year" id="id_mydate_year"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="2007">2007</option> | <option value="2007">2007</option> | ||||||
| <option value="2008">2008</option> | <option value="2008">2008</option> | ||||||
| <option value="2009">2009</option> | <option value="2009">2009</option> | ||||||
| @@ -178,6 +178,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
|  |  | ||||||
|         # Invalid dates should still render the failed date. |         # Invalid dates should still render the failed date. | ||||||
|         self.assertHTMLEqual(w.render('mydate', '2010-02-31'), """<select name="mydate_month" id="id_mydate_month"> |         self.assertHTMLEqual(w.render('mydate', '2010-02-31'), """<select name="mydate_month" id="id_mydate_month"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="1">January</option> | <option value="1">January</option> | ||||||
| <option value="2" selected="selected">February</option> | <option value="2" selected="selected">February</option> | ||||||
| <option value="3">March</option> | <option value="3">March</option> | ||||||
| @@ -192,6 +193,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
| <option value="12">December</option> | <option value="12">December</option> | ||||||
| </select> | </select> | ||||||
| <select name="mydate_day" id="id_mydate_day"> | <select name="mydate_day" id="id_mydate_day"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="1">1</option> | <option value="1">1</option> | ||||||
| <option value="2">2</option> | <option value="2">2</option> | ||||||
| <option value="3">3</option> | <option value="3">3</option> | ||||||
| @@ -225,6 +227,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
| <option value="31" selected="selected">31</option> | <option value="31" selected="selected">31</option> | ||||||
| </select> | </select> | ||||||
| <select name="mydate_year" id="id_mydate_year"> | <select name="mydate_year" id="id_mydate_year"> | ||||||
|  | <option value="0">---</option> | ||||||
| <option value="2007">2007</option> | <option value="2007">2007</option> | ||||||
| <option value="2008">2008</option> | <option value="2008">2008</option> | ||||||
| <option value="2009">2009</option> | <option value="2009">2009</option> | ||||||
| @@ -293,133 +296,6 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
| <select name="mydate_year" id="id_mydate_year"> | <select name="mydate_year" id="id_mydate_year"> | ||||||
| <option value="0">---</option> | <option value="0">---</option> | ||||||
| <option value="2013">2013</option> | <option value="2013">2013</option> | ||||||
| </select>""") |  | ||||||
|  |  | ||||||
|         # Using a SelectDateWidget in a form. |  | ||||||
|         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016'), required=False) |  | ||||||
|         self.assertHTMLEqual(w.render('mydate', ''), """<select name="mydate_month" id="id_mydate_month"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="1">January</option> |  | ||||||
| <option value="2">February</option> |  | ||||||
| <option value="3">March</option> |  | ||||||
| <option value="4">April</option> |  | ||||||
| <option value="5">May</option> |  | ||||||
| <option value="6">June</option> |  | ||||||
| <option value="7">July</option> |  | ||||||
| <option value="8">August</option> |  | ||||||
| <option value="9">September</option> |  | ||||||
| <option value="10">October</option> |  | ||||||
| <option value="11">November</option> |  | ||||||
| <option value="12">December</option> |  | ||||||
| </select> |  | ||||||
| <select name="mydate_day" id="id_mydate_day"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="1">1</option> |  | ||||||
| <option value="2">2</option> |  | ||||||
| <option value="3">3</option> |  | ||||||
| <option value="4">4</option> |  | ||||||
| <option value="5">5</option> |  | ||||||
| <option value="6">6</option> |  | ||||||
| <option value="7">7</option> |  | ||||||
| <option value="8">8</option> |  | ||||||
| <option value="9">9</option> |  | ||||||
| <option value="10">10</option> |  | ||||||
| <option value="11">11</option> |  | ||||||
| <option value="12">12</option> |  | ||||||
| <option value="13">13</option> |  | ||||||
| <option value="14">14</option> |  | ||||||
| <option value="15">15</option> |  | ||||||
| <option value="16">16</option> |  | ||||||
| <option value="17">17</option> |  | ||||||
| <option value="18">18</option> |  | ||||||
| <option value="19">19</option> |  | ||||||
| <option value="20">20</option> |  | ||||||
| <option value="21">21</option> |  | ||||||
| <option value="22">22</option> |  | ||||||
| <option value="23">23</option> |  | ||||||
| <option value="24">24</option> |  | ||||||
| <option value="25">25</option> |  | ||||||
| <option value="26">26</option> |  | ||||||
| <option value="27">27</option> |  | ||||||
| <option value="28">28</option> |  | ||||||
| <option value="29">29</option> |  | ||||||
| <option value="30">30</option> |  | ||||||
| <option value="31">31</option> |  | ||||||
| </select> |  | ||||||
| <select name="mydate_year" id="id_mydate_year"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="2007">2007</option> |  | ||||||
| <option value="2008">2008</option> |  | ||||||
| <option value="2009">2009</option> |  | ||||||
| <option value="2010">2010</option> |  | ||||||
| <option value="2011">2011</option> |  | ||||||
| <option value="2012">2012</option> |  | ||||||
| <option value="2013">2013</option> |  | ||||||
| <option value="2014">2014</option> |  | ||||||
| <option value="2015">2015</option> |  | ||||||
| <option value="2016">2016</option> |  | ||||||
| </select>""") |  | ||||||
|         self.assertHTMLEqual(w.render('mydate', '2010-04-15'), """<select name="mydate_month" id="id_mydate_month"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="1">January</option> |  | ||||||
| <option value="2">February</option> |  | ||||||
| <option value="3">March</option> |  | ||||||
| <option value="4" selected="selected">April</option> |  | ||||||
| <option value="5">May</option> |  | ||||||
| <option value="6">June</option> |  | ||||||
| <option value="7">July</option> |  | ||||||
| <option value="8">August</option> |  | ||||||
| <option value="9">September</option> |  | ||||||
| <option value="10">October</option> |  | ||||||
| <option value="11">November</option> |  | ||||||
| <option value="12">December</option> |  | ||||||
| </select> |  | ||||||
| <select name="mydate_day" id="id_mydate_day"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="1">1</option> |  | ||||||
| <option value="2">2</option> |  | ||||||
| <option value="3">3</option> |  | ||||||
| <option value="4">4</option> |  | ||||||
| <option value="5">5</option> |  | ||||||
| <option value="6">6</option> |  | ||||||
| <option value="7">7</option> |  | ||||||
| <option value="8">8</option> |  | ||||||
| <option value="9">9</option> |  | ||||||
| <option value="10">10</option> |  | ||||||
| <option value="11">11</option> |  | ||||||
| <option value="12">12</option> |  | ||||||
| <option value="13">13</option> |  | ||||||
| <option value="14">14</option> |  | ||||||
| <option value="15" selected="selected">15</option> |  | ||||||
| <option value="16">16</option> |  | ||||||
| <option value="17">17</option> |  | ||||||
| <option value="18">18</option> |  | ||||||
| <option value="19">19</option> |  | ||||||
| <option value="20">20</option> |  | ||||||
| <option value="21">21</option> |  | ||||||
| <option value="22">22</option> |  | ||||||
| <option value="23">23</option> |  | ||||||
| <option value="24">24</option> |  | ||||||
| <option value="25">25</option> |  | ||||||
| <option value="26">26</option> |  | ||||||
| <option value="27">27</option> |  | ||||||
| <option value="28">28</option> |  | ||||||
| <option value="29">29</option> |  | ||||||
| <option value="30">30</option> |  | ||||||
| <option value="31">31</option> |  | ||||||
| </select> |  | ||||||
| <select name="mydate_year" id="id_mydate_year"> |  | ||||||
| <option value="0">---</option> |  | ||||||
| <option value="2007">2007</option> |  | ||||||
| <option value="2008">2008</option> |  | ||||||
| <option value="2009">2009</option> |  | ||||||
| <option value="2010" selected="selected">2010</option> |  | ||||||
| <option value="2011">2011</option> |  | ||||||
| <option value="2012">2012</option> |  | ||||||
| <option value="2013">2013</option> |  | ||||||
| <option value="2014">2014</option> |  | ||||||
| <option value="2015">2015</option> |  | ||||||
| <option value="2016">2016</option> |  | ||||||
| </select>""") | </select>""") | ||||||
|  |  | ||||||
|         a = GetDate({'mydate_month': '4', 'mydate_day': '1', 'mydate_year': '2008'}) |         a = GetDate({'mydate_month': '4', 'mydate_day': '1', 'mydate_year': '2008'}) | ||||||
| @@ -768,13 +644,15 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | |||||||
|         self.assertTrue(FormWithFile().is_multipart()) |         self.assertTrue(FormWithFile().is_multipart()) | ||||||
|         self.assertTrue(FormWithImage().is_multipart()) |         self.assertTrue(FormWithImage().is_multipart()) | ||||||
|  |  | ||||||
|     def test_field_not_required(self): |     def test_selectdatewidget_required(self): | ||||||
|         b = GetNotRequiredDate({ |         class GetNotRequiredDate(Form): | ||||||
|             'mydate_year': '', |             mydate = DateField(widget=SelectDateWidget, required=False) | ||||||
|             'mydate_month': '', |  | ||||||
|             'mydate_day': '' |         class GetRequiredDate(Form): | ||||||
|         }) |             mydate = DateField(widget=SelectDateWidget, required=True) | ||||||
|         self.assertFalse(b.has_changed()) |  | ||||||
|  |         self.assertFalse(GetNotRequiredDate().fields['mydate'].widget.is_required) | ||||||
|  |         self.assertTrue(GetRequiredDate().fields['mydate'].widget.is_required) | ||||||
|  |  | ||||||
|  |  | ||||||
| @override_settings(USE_L10N=True) | @override_settings(USE_L10N=True) | ||||||
| @@ -788,7 +666,7 @@ class FormsExtraL10NTestCase(TestCase): | |||||||
|         super(FormsExtraL10NTestCase, self).tearDown() |         super(FormsExtraL10NTestCase, self).tearDown() | ||||||
|  |  | ||||||
|     def test_l10n(self): |     def test_l10n(self): | ||||||
|         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016'), required=False) |         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016')) | ||||||
|         self.assertEqual(w.value_from_datadict({'date_year': '2010', 'date_month': '8', 'date_day': '13'}, {}, 'date'), '13-08-2010') |         self.assertEqual(w.value_from_datadict({'date_year': '2010', 'date_month': '8', 'date_day': '13'}, {}, 'date'), '13-08-2010') | ||||||
|  |  | ||||||
|         self.assertHTMLEqual(w.render('date', '13-08-2010'), """<select name="date_day" id="id_date_day"> |         self.assertHTMLEqual(w.render('date', '13-08-2010'), """<select name="date_day" id="id_date_day"> | ||||||
|   | |||||||
| @@ -415,6 +415,7 @@ class FormattingTests(TransRealMixin, TestCase): | |||||||
|         but not formats |         but not formats | ||||||
|         """ |         """ | ||||||
|         with translation.override('ca', deactivate=True): |         with translation.override('ca', deactivate=True): | ||||||
|  |             self.maxDiff = 3000 | ||||||
|             self.assertEqual('N j, Y', get_format('DATE_FORMAT')) |             self.assertEqual('N j, Y', get_format('DATE_FORMAT')) | ||||||
|             self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK')) |             self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK')) | ||||||
|             self.assertEqual('.', get_format('DECIMAL_SEPARATOR')) |             self.assertEqual('.', get_format('DECIMAL_SEPARATOR')) | ||||||
| @@ -461,7 +462,7 @@ class FormattingTests(TransRealMixin, TestCase): | |||||||
|             self.assertEqual(True, form2.is_valid()) |             self.assertEqual(True, form2.is_valid()) | ||||||
|             self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field']) |             self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field']) | ||||||
|             self.assertHTMLEqual( |             self.assertHTMLEqual( | ||||||
|                 '<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', |                 '<select name="mydate_month" id="id_mydate_month">\n<option value="0">---</option>\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="0">---</option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="0">---</option>\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', | ||||||
|                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) |                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
| @@ -508,6 +509,7 @@ class FormattingTests(TransRealMixin, TestCase): | |||||||
|         fr_formats.FIRST_DAY_OF_WEEK = backup_FIRST_DAY_OF_WEEK |         fr_formats.FIRST_DAY_OF_WEEK = backup_FIRST_DAY_OF_WEEK | ||||||
|  |  | ||||||
|     def test_l10n_enabled(self): |     def test_l10n_enabled(self): | ||||||
|  |         self.maxDiff = 3000 | ||||||
|         # Catalan locale |         # Catalan locale | ||||||
|         with translation.override('ca', deactivate=True): |         with translation.override('ca', deactivate=True): | ||||||
|             self.assertEqual('j \d\e F \d\e Y', get_format('DATE_FORMAT')) |             self.assertEqual('j \d\e F \d\e Y', get_format('DATE_FORMAT')) | ||||||
| @@ -592,14 +594,14 @@ class FormattingTests(TransRealMixin, TestCase): | |||||||
|             self.assertEqual(True, form5.is_valid()) |             self.assertEqual(True, form5.is_valid()) | ||||||
|             self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field']) |             self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field']) | ||||||
|             self.assertHTMLEqual( |             self.assertHTMLEqual( | ||||||
|                 '<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', |                 '<select name="mydate_day" id="id_mydate_day">\n<option value="0">---</option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="0">---</option>\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="0">---</option>\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', | ||||||
|                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) |                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|         # Russian locale (with E as month) |         # Russian locale (with E as month) | ||||||
|         with translation.override('ru', deactivate=True): |         with translation.override('ru', deactivate=True): | ||||||
|             self.assertHTMLEqual( |             self.assertHTMLEqual( | ||||||
|                 '<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">\u042f\u043d\u0432\u0430\u0440\u044c</option>\n<option value="2">\u0424\u0435\u0432\u0440\u0430\u043b\u044c</option>\n<option value="3">\u041c\u0430\u0440\u0442</option>\n<option value="4">\u0410\u043f\u0440\u0435\u043b\u044c</option>\n<option value="5">\u041c\u0430\u0439</option>\n<option value="6">\u0418\u044e\u043d\u044c</option>\n<option value="7">\u0418\u044e\u043b\u044c</option>\n<option value="8">\u0410\u0432\u0433\u0443\u0441\u0442</option>\n<option value="9">\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c</option>\n<option value="10">\u041e\u043a\u0442\u044f\u0431\u0440\u044c</option>\n<option value="11">\u041d\u043e\u044f\u0431\u0440\u044c</option>\n<option value="12" selected="selected">\u0414\u0435\u043a\u0430\u0431\u0440\u044c</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', |                 '<select name="mydate_day" id="id_mydate_day">\n<option value="0">---</option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="0">---</option>\n<option value="1">\u042f\u043d\u0432\u0430\u0440\u044c</option>\n<option value="2">\u0424\u0435\u0432\u0440\u0430\u043b\u044c</option>\n<option value="3">\u041c\u0430\u0440\u0442</option>\n<option value="4">\u0410\u043f\u0440\u0435\u043b\u044c</option>\n<option value="5">\u041c\u0430\u0439</option>\n<option value="6">\u0418\u044e\u043d\u044c</option>\n<option value="7">\u0418\u044e\u043b\u044c</option>\n<option value="8">\u0410\u0432\u0433\u0443\u0441\u0442</option>\n<option value="9">\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c</option>\n<option value="10">\u041e\u043a\u0442\u044f\u0431\u0440\u044c</option>\n<option value="11">\u041d\u043e\u044f\u0431\u0440\u044c</option>\n<option value="12" selected="selected">\u0414\u0435\u043a\u0430\u0431\u0440\u044c</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="0">---</option>\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', | ||||||
|                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) |                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
| @@ -664,7 +666,7 @@ class FormattingTests(TransRealMixin, TestCase): | |||||||
|             self.assertEqual(True, form6.is_valid()) |             self.assertEqual(True, form6.is_valid()) | ||||||
|             self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field']) |             self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field']) | ||||||
|             self.assertHTMLEqual( |             self.assertHTMLEqual( | ||||||
|                 '<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', |                 '<select name="mydate_month" id="id_mydate_month">\n<option value="0">---</option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="0">---</option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="0">---</option>\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>', | ||||||
|                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) |                 SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31)) | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user