From 384c180e414a982a6cc5ccabc675bcfb4fd80988 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 2 Mar 2013 18:01:24 +0100 Subject: [PATCH] Fixed #19917 -- Added microseconds in default TIME_INPUT_FORMATS Thanks minddust for the report. --- django/conf/global_settings.py | 1 + django/utils/formats.py | 2 +- docs/ref/settings.txt | 5 +++++ tests/forms_tests/tests/input_formats.py | 7 ++++++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 13213d0cbba..42df4b601ad 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -365,6 +365,7 @@ DATE_INPUT_FORMATS = ( # * Note that these format strings are different from the ones to display dates TIME_INPUT_FORMATS = ( '%H:%M:%S', # '14:30:59' + '%H:%M:%S.%f', # '14:30:59.000200' '%H:%M', # '14:30' ) diff --git a/django/utils/formats.py b/django/utils/formats.py index f0abdc2f7b5..cc661490268 100644 --- a/django/utils/formats.py +++ b/django/utils/formats.py @@ -19,7 +19,7 @@ _format_modules_cache = {} ISO_INPUT_FORMATS = { 'DATE_INPUT_FORMATS': ('%Y-%m-%d',), - 'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M'), + 'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M'), 'DATETIME_INPUT_FORMATS': ( '%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt index baeb02c32d4..0cd141bcef6 100644 --- a/docs/ref/settings.txt +++ b/docs/ref/settings.txt @@ -1731,6 +1731,7 @@ Default:: ( '%H:%M:%S', # '14:30:59' + '%H:%M:%S.%f', # '14:30:59.000200' '%H:%M', # '14:30' ) @@ -1744,6 +1745,10 @@ precedence and will be applied instead. See also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`. +.. versionchanged:: 1.6 + +Input format with microseconds has been added. + .. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior .. setting:: TIME_ZONE diff --git a/tests/forms_tests/tests/input_formats.py b/tests/forms_tests/tests/input_formats.py index 7a305dbc2b7..eb0e8dcad81 100644 --- a/tests/forms_tests/tests/input_formats.py +++ b/tests/forms_tests/tests/input_formats.py @@ -9,7 +9,8 @@ from django.test import SimpleTestCase @override_settings(TIME_INPUT_FORMATS=["%I:%M:%S %p", "%I:%M %p"], USE_L10N=True) class LocalizedTimeTests(SimpleTestCase): def setUp(self): - # nl/formats.py has customized TIME_INPUT_FORMATS + # nl/formats.py has customized TIME_INPUT_FORMATS: + # ('%H:%M:%S', '%H.%M:%S', '%H.%M', '%H:%M') activate('nl') def tearDown(self): @@ -37,6 +38,10 @@ class LocalizedTimeTests(SimpleTestCase): text = f.widget._format_value(result) self.assertEqual(text, "13:30:00") + # ISO formats are accepted, even if not specified in formats.py + result = f.clean('13:30:05.000155') + self.assertEqual(result, time(13,30,5,155)) + def test_localized_timeField(self): "Localized TimeFields act as unlocalized widgets" f = forms.TimeField(localize=True)