Fixed #29109 -- Fixed the admin time picker widget for the Thai locale.

This commit is contained in:
Manatsawin Hanmongkolchai 2018-02-11 04:05:41 +07:00 committed by Tim Graham
parent b832de869e
commit 1a1264f149
3 changed files with 23 additions and 2 deletions

View File

@ -19,13 +19,13 @@ DATE_INPUT_FORMATS = [
'%d %B %Y', # 25 ตุลาคม 2006 '%d %B %Y', # 25 ตุลาคม 2006
] ]
TIME_INPUT_FORMATS = [ TIME_INPUT_FORMATS = [
'%H:%M:%S.%f', # 14:30:59.000200
'%H:%M:%S', # 14:30:59 '%H:%M:%S', # 14:30:59
'%H:%M:%S.%f', # 14:30:59.000200
'%H:%M', # 14:30 '%H:%M', # 14:30
] ]
DATETIME_INPUT_FORMATS = [ DATETIME_INPUT_FORMATS = [
'%d/%m/%Y %H:%M:%S.%f', # 25/10/2006 14:30:59.000200
'%d/%m/%Y %H:%M:%S', # 25/10/2006 14:30:59 '%d/%m/%Y %H:%M:%S', # 25/10/2006 14:30:59
'%d/%m/%Y %H:%M:%S.%f', # 25/10/2006 14:30:59.000200
'%d/%m/%Y %H:%M', # 25/10/2006 14:30 '%d/%m/%Y %H:%M', # 25/10/2006 14:30
] ]
DECIMAL_SEPARATOR = '.' DECIMAL_SEPARATOR = '.'

View File

@ -11,3 +11,7 @@ Bugfixes
* Fixed a regression that caused sliced ``QuerySet.distinct().order_by()`` * Fixed a regression that caused sliced ``QuerySet.distinct().order_by()``
followed by ``count()`` to crash (:ticket:`29108`). followed by ``count()`` to crash (:ticket:`29108`).
* Prioritized the datetime and time input formats without ``%f`` for the Thai
locale to fix the admin time picker widget displaying "undefined"
(:ticket:`29109`).

View File

@ -3,6 +3,7 @@ import decimal
import gettext as gettext_module import gettext as gettext_module
import os import os
import pickle import pickle
import re
from contextlib import contextmanager from contextlib import contextmanager
from importlib import import_module from importlib import import_module
from threading import local from threading import local
@ -1095,6 +1096,22 @@ class FormattingTests(SimpleTestCase):
with translation.override('fr', deactivate=True): with translation.override('fr', deactivate=True):
self.assertEqual('d/m/Y CUSTOM', get_format('CUSTOM_DAY_FORMAT')) self.assertEqual('d/m/Y CUSTOM', get_format('CUSTOM_DAY_FORMAT'))
def test_admin_javascript_supported_input_formats(self):
"""
The first input format for DATE_INPUT_FORMATS, TIME_INPUT_FORMATS, and
DATETIME_INPUT_FORMATS must not contain %f since that's unsupported by
the admin's time picker widget.
"""
regex = re.compile('%([^BcdHImMpSwxXyY%])')
for language_code, language_name in settings.LANGUAGES:
for format_name in ('DATE_INPUT_FORMATS', 'TIME_INPUT_FORMATS', 'DATETIME_INPUT_FORMATS'):
with self.subTest(language=language_code, format=format_name):
formatter = get_format(format_name, lang=language_code)[0]
self.assertEqual(
regex.findall(formatter), [],
"%s locale's %s uses an unsupported format code." % (language_code, format_name)
)
class MiscTests(SimpleTestCase): class MiscTests(SimpleTestCase):