Ver código fonte

Fixed #28530 -- Prevented SelectDateWidget from localizing years in output.

caleb logan 7 anos atrás
pai
commit
9e2bf65d6a

+ 1 - 1
django/forms/widgets.py

@@ -958,7 +958,7 @@ class SelectDateWidget(Widget):
     def get_context(self, name, value, attrs):
         context = super().get_context(name, value, attrs)
         date_context = {}
-        year_choices = [(i, i) for i in self.years]
+        year_choices = [(i, str(i)) for i in self.years]
         if not self.is_required:
             year_choices.insert(0, self.year_none_value)
         year_attrs = context['widget']['attrs'].copy()

+ 3 - 0
docs/releases/1.11.5.txt

@@ -29,3 +29,6 @@ Bugfixes
 
 * Omitted ``pages_per_range`` from ``BrinIndex.deconstruct()`` if it's ``None``
   (:ticket:`25809`).
+
+* Fixed a regression where ``SelectDateWidget`` localized the years in the
+  select box (:ticket:`28530`).

+ 61 - 0
tests/forms_tests/widget_tests/test_selectdatewidget.py

@@ -504,3 +504,64 @@ class SelectDateWidgetTest(WidgetTest):
         self.assertIs(self.widget.value_omitted_from_data({'field_day': '1'}, {}, 'field'), False)
         data = {'field_day': '1', 'field_month': '12', 'field_year': '2000'}
         self.assertIs(self.widget.value_omitted_from_data(data, {}, 'field'), False)
+
+    @override_settings(USE_THOUSAND_SEPARATOR=True, USE_L10N=True)
+    def test_years_rendered_without_separator(self):
+        widget = SelectDateWidget(years=(2007,))
+        self.check_html(widget, 'mydate', '', html=(
+            """
+            <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>
+            </select>
+            """
+        ))