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' | ||||
|     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.required = required | ||||
|  | ||||
|         # Optional list or tuple of years to use in the "year" select box. | ||||
|         if years: | ||||
| @@ -139,7 +138,7 @@ class SelectDateWidget(Widget): | ||||
|             id_ = self.attrs['id'] | ||||
|         else: | ||||
|             id_ = 'id_%s' % name | ||||
|         if not (self.required and val): | ||||
|         if not self.is_required: | ||||
|             choices.insert(0, self.none_value) | ||||
|         local_attrs = self.build_attrs(id=field % id_) | ||||
|         s = Select(choices=choices) | ||||
|   | ||||
| @@ -613,6 +613,11 @@ Miscellaneous | ||||
|   you relied on the default field ordering while having fields defined on both | ||||
|   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 | ||||
|   same way as other similar calls like ``prefetch_related``. That is, | ||||
|   ``select_related('foo', 'bar')`` is equivalent to | ||||
|   | ||||
| @@ -26,10 +26,6 @@ class GetDate(Form): | ||||
|     mydate = DateField(widget=SelectDateWidget) | ||||
|  | ||||
|  | ||||
| class GetNotRequiredDate(Form): | ||||
|     mydate = DateField(widget=SelectDateWidget, required=False) | ||||
|  | ||||
|  | ||||
| class GetDateShowHiddenInitial(Form): | ||||
|     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 | ||||
|     def test_selectdate(self): | ||||
|         self.maxDiff = None | ||||
|         w = SelectDateWidget(years=('2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016')) | ||||
|  | ||||
|         # Rendering the default state. | ||||
| @@ -114,6 +111,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
|  | ||||
|         # Rendering a string value. | ||||
|         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> | ||||
| @@ -128,6 +126,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
| <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> | ||||
| @@ -161,6 +160,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
| <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> | ||||
| @@ -178,6 +178,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
|  | ||||
|         # Invalid dates should still render the failed date. | ||||
|         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="2" selected="selected">February</option> | ||||
| <option value="3">March</option> | ||||
| @@ -192,6 +193,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
| <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> | ||||
| @@ -225,6 +227,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
| <option value="31" selected="selected">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> | ||||
| @@ -293,133 +296,6 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin): | ||||
| <select name="mydate_year" id="id_mydate_year"> | ||||
| <option value="0">---</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>""") | ||||
|  | ||||
|         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(FormWithImage().is_multipart()) | ||||
|  | ||||
|     def test_field_not_required(self): | ||||
|         b = GetNotRequiredDate({ | ||||
|             'mydate_year': '', | ||||
|             'mydate_month': '', | ||||
|             'mydate_day': '' | ||||
|         }) | ||||
|         self.assertFalse(b.has_changed()) | ||||
|     def test_selectdatewidget_required(self): | ||||
|         class GetNotRequiredDate(Form): | ||||
|             mydate = DateField(widget=SelectDateWidget, required=False) | ||||
|  | ||||
|         class GetRequiredDate(Form): | ||||
|             mydate = DateField(widget=SelectDateWidget, required=True) | ||||
|  | ||||
|         self.assertFalse(GetNotRequiredDate().fields['mydate'].widget.is_required) | ||||
|         self.assertTrue(GetRequiredDate().fields['mydate'].widget.is_required) | ||||
|  | ||||
|  | ||||
| @override_settings(USE_L10N=True) | ||||
| @@ -788,7 +666,7 @@ class FormsExtraL10NTestCase(TestCase): | ||||
|         super(FormsExtraL10NTestCase, self).tearDown() | ||||
|  | ||||
|     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.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 | ||||
|         """ | ||||
|         with translation.override('ca', deactivate=True): | ||||
|             self.maxDiff = 3000 | ||||
|             self.assertEqual('N j, Y', get_format('DATE_FORMAT')) | ||||
|             self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK')) | ||||
|             self.assertEqual('.', get_format('DECIMAL_SEPARATOR')) | ||||
| @@ -461,7 +462,7 @@ class FormattingTests(TransRealMixin, TestCase): | ||||
|             self.assertEqual(True, form2.is_valid()) | ||||
|             self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field']) | ||||
|             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)) | ||||
|             ) | ||||
|  | ||||
| @@ -508,6 +509,7 @@ class FormattingTests(TransRealMixin, TestCase): | ||||
|         fr_formats.FIRST_DAY_OF_WEEK = backup_FIRST_DAY_OF_WEEK | ||||
|  | ||||
|     def test_l10n_enabled(self): | ||||
|         self.maxDiff = 3000 | ||||
|         # Catalan locale | ||||
|         with translation.override('ca', deactivate=True): | ||||
|             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(datetime.date(2009, 12, 31), form5.cleaned_data['date_field']) | ||||
|             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)) | ||||
|             ) | ||||
|  | ||||
|         # Russian locale (with E as month) | ||||
|         with translation.override('ru', deactivate=True): | ||||
|             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)) | ||||
|             ) | ||||
|  | ||||
| @@ -664,7 +666,7 @@ class FormattingTests(TransRealMixin, TestCase): | ||||
|             self.assertEqual(True, form6.is_valid()) | ||||
|             self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field']) | ||||
|             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)) | ||||
|             ) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user