Skip to content

Commit 75d018f

Browse files
committed
Fixed #13621 -- Corrected the handling of input formats on date/time form fields. Thanks to bufke for the report, zerok and jacmkno for their work on the patch, and Karen, Jannis and Alex for feedback.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13484 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent 25f0ff4 commit 75d018f

File tree

3 files changed

+913
-9
lines changed

3 files changed

+913
-9
lines changed

django/forms/widgets.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,13 @@ def __init__(self, attrs=None, format=None):
308308
super(DateInput, self).__init__(attrs)
309309
if format:
310310
self.format = format
311+
self.manual_format = True
312+
else:
313+
self.format = formats.get_format('DATE_INPUT_FORMATS')[0]
314+
self.manual_format = False
311315

312316
def _format_value(self, value):
313-
if self.is_localized:
317+
if self.is_localized and not self.manual_format:
314318
return formats.localize_input(value)
315319
elif hasattr(value, 'strftime'):
316320
value = datetime_safe.new_date(value)
@@ -336,9 +340,13 @@ def __init__(self, attrs=None, format=None):
336340
super(DateTimeInput, self).__init__(attrs)
337341
if format:
338342
self.format = format
343+
self.manual_format = True
344+
else:
345+
self.format = formats.get_format('DATETIME_INPUT_FORMATS')[0]
346+
self.manual_format = False
339347

340348
def _format_value(self, value):
341-
if self.is_localized:
349+
if self.is_localized and not self.manual_format:
342350
return formats.localize_input(value)
343351
elif hasattr(value, 'strftime'):
344352
value = datetime_safe.new_datetime(value)
@@ -364,9 +372,13 @@ def __init__(self, attrs=None, format=None):
364372
super(TimeInput, self).__init__(attrs)
365373
if format:
366374
self.format = format
375+
self.manual_format = True
376+
else:
377+
self.format = formats.get_format('TIME_INPUT_FORMATS')[0]
378+
self.manual_format = False
367379

368380
def _format_value(self, value):
369-
if self.is_localized:
381+
if self.is_localized and not self.manual_format:
370382
return formats.localize_input(value)
371383
elif hasattr(value, 'strftime'):
372384
return value.strftime(self.format)
@@ -751,12 +763,8 @@ class SplitDateTimeWidget(MultiWidget):
751763
time_format = TimeInput.format
752764

753765
def __init__(self, attrs=None, date_format=None, time_format=None):
754-
if date_format:
755-
self.date_format = date_format
756-
if time_format:
757-
self.time_format = time_format
758-
widgets = (DateInput(attrs=attrs, format=self.date_format),
759-
TimeInput(attrs=attrs, format=self.time_format))
766+
widgets = (DateInput(attrs=attrs, format=date_format),
767+
TimeInput(attrs=attrs, format=time_format))
760768
super(SplitDateTimeWidget, self).__init__(widgets, attrs)
761769

762770
def decompress(self, value):

0 commit comments

Comments
 (0)