Fixed #25812 -- Restored the ability to use custom formats with the date template filter.
This commit is contained in:
parent
ab33269b00
commit
34d88944f4
1
AUTHORS
1
AUTHORS
|
@ -749,6 +749,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Wilson Miner <wminer@gmail.com>
|
Wilson Miner <wminer@gmail.com>
|
||||||
wojtek
|
wojtek
|
||||||
Xia Kai <http://blog.xiaket.org/>
|
Xia Kai <http://blog.xiaket.org/>
|
||||||
|
Yann Fouillat <gagaro42@gmail.com>
|
||||||
Yann Malet
|
Yann Malet
|
||||||
Yasushi Masuda <whosaysni@gmail.com>
|
Yasushi Masuda <whosaysni@gmail.com>
|
||||||
ye7cakf02@sneakemail.com
|
ye7cakf02@sneakemail.com
|
||||||
|
|
|
@ -110,8 +110,6 @@ def get_format(format_type, lang=None, use_l10n=None):
|
||||||
be localized (or not), overriding the value of settings.USE_L10N.
|
be localized (or not), overriding the value of settings.USE_L10N.
|
||||||
"""
|
"""
|
||||||
format_type = force_str(format_type)
|
format_type = force_str(format_type)
|
||||||
if format_type not in FORMAT_SETTINGS:
|
|
||||||
return format_type
|
|
||||||
if use_l10n or (use_l10n is None and settings.USE_L10N):
|
if use_l10n or (use_l10n is None and settings.USE_L10N):
|
||||||
if lang is None:
|
if lang is None:
|
||||||
lang = get_language()
|
lang = get_language()
|
||||||
|
@ -120,9 +118,6 @@ def get_format(format_type, lang=None, use_l10n=None):
|
||||||
cached = _format_cache[cache_key]
|
cached = _format_cache[cache_key]
|
||||||
if cached is not None:
|
if cached is not None:
|
||||||
return cached
|
return cached
|
||||||
else:
|
|
||||||
# Return the general setting by default
|
|
||||||
return getattr(settings, format_type)
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
for module in get_format_modules(lang):
|
for module in get_format_modules(lang):
|
||||||
try:
|
try:
|
||||||
|
@ -137,6 +132,9 @@ def get_format(format_type, lang=None, use_l10n=None):
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
_format_cache[cache_key] = None
|
_format_cache[cache_key] = None
|
||||||
|
if format_type not in FORMAT_SETTINGS:
|
||||||
|
return format_type
|
||||||
|
# Return the general setting by default
|
||||||
return getattr(settings, format_type)
|
return getattr(settings, format_type)
|
||||||
|
|
||||||
get_format_lazy = lazy(get_format, six.text_type, list, tuple)
|
get_format_lazy = lazy(get_format, six.text_type, list, tuple)
|
||||||
|
|
|
@ -14,3 +14,7 @@ Bugfixes
|
||||||
|
|
||||||
* Corrected ``__len`` query lookup on ``ArrayField`` for empty arrays
|
* Corrected ``__len`` query lookup on ``ArrayField`` for empty arrays
|
||||||
(:ticket:`25772`).
|
(:ticket:`25772`).
|
||||||
|
|
||||||
|
* Restored the ability to use custom formats from ``formats.py`` with
|
||||||
|
``django.utils.formats.get_format()`` and the ``date`` template filter
|
||||||
|
(:ticket:`25812`).
|
||||||
|
|
|
@ -164,7 +164,10 @@ the package where format files will exist, for instance::
|
||||||
]
|
]
|
||||||
|
|
||||||
Files are not placed directly in this directory, but in a directory named as
|
Files are not placed directly in this directory, but in a directory named as
|
||||||
the locale, and must be named ``formats.py``.
|
the locale, and must be named ``formats.py``. Be careful not to put sensitive
|
||||||
|
information in these files as values inside can be exposed if you pass the
|
||||||
|
string to ``django.utils.formats.get_format()`` (used by the :tfilter:`date`
|
||||||
|
template filter).
|
||||||
|
|
||||||
To customize the English formats, a structure like this would be needed::
|
To customize the English formats, a structure like this would be needed::
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# A user-defined format
|
||||||
|
CUSTOM_DAY_FORMAT = 'd/m/Y CUSTOM'
|
|
@ -1252,6 +1252,11 @@ class FormattingTests(SimpleTestCase):
|
||||||
def test_format_arbitrary_settings(self):
|
def test_format_arbitrary_settings(self):
|
||||||
self.assertEqual(get_format('DEBUG'), 'DEBUG')
|
self.assertEqual(get_format('DEBUG'), 'DEBUG')
|
||||||
|
|
||||||
|
def test_get_custom_format(self):
|
||||||
|
with self.settings(FORMAT_MODULE_PATH='i18n.other.locale'):
|
||||||
|
with translation.override('fr', deactivate=True):
|
||||||
|
self.assertEqual('d/m/Y CUSTOM', get_format('CUSTOM_DAY_FORMAT'))
|
||||||
|
|
||||||
|
|
||||||
class MiscTests(SimpleTestCase):
|
class MiscTests(SimpleTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue