Explorar el Código

Fixed #32727 -- Allowed spaces before time zone offset in parse_datetime().

Ben Wilber hace 3 años
padre
commit
fff4870bfa
Se han modificado 2 ficheros con 4 adiciones y 1 borrados
  1. 1 1
      django/utils/dateparse.py
  2. 3 0
      tests/utils_tests/test_dateparse.py

+ 1 - 1
django/utils/dateparse.py

@@ -23,7 +23,7 @@ datetime_re = _lazy_re_compile(
     r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})'
     r'[T ](?P<hour>\d{1,2}):(?P<minute>\d{1,2})'
     r'(?::(?P<second>\d{1,2})(?:[\.,](?P<microsecond>\d{1,6})\d{0,6})?)?'
-    r'(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$'
+    r'\s*(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$'
 )
 
 standard_duration_re = _lazy_re_compile(

+ 3 - 0
tests/utils_tests/test_dateparse.py

@@ -40,6 +40,9 @@ class DateParseTests(unittest.TestCase):
             ('2012-04-23T10:20:30.400+02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(120))),
             ('2012-04-23T10:20:30.400-02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(-120))),
             ('2012-04-23T10:20:30,400-02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(-120))),
+            ('2012-04-23T10:20:30.400 +0230', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(150))),
+            ('2012-04-23T10:20:30,400 +00', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(0))),
+            ('2012-04-23T10:20:30   -02', datetime(2012, 4, 23, 10, 20, 30, 0, get_fixed_timezone(-120))),
         )
         for source, expected in valid_inputs:
             with self.subTest(source=source):