1
0
mirror of https://github.com/django/django.git synced 2025-07-04 09:49:12 +00:00

[1.2.X] Fixed #15129 -- Fixed stability of data input/output L10N format modules priority order. Thanks tonnzor for the report and fix.

Backport of [15402] from trunk

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15403 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ramiro Morales 2011-02-03 15:54:27 +00:00
parent f6606da3e8
commit 5f2f0113db
2 changed files with 17 additions and 3 deletions

View File

@ -36,12 +36,12 @@ def iter_format_modules(lang):
def get_format_modules(reverse=False): def get_format_modules(reverse=False):
""" """
Returns an iterator over the format modules found Returns a list of the format modules found
""" """
lang = get_language() lang = get_language()
modules = _format_modules_cache.setdefault(lang, list(iter_format_modules(lang))) modules = _format_modules_cache.setdefault(lang, list(iter_format_modules(lang)))
if reverse: if reverse:
modules.reverse() return list(reversed(modules))
return modules return modules
def get_format(format_type): def get_format(format_type):

View File

@ -8,7 +8,8 @@ import pickle
from django.conf import settings from django.conf import settings
from django.template import Template, Context from django.template import Template, Context
from django.test import TestCase from django.test import TestCase
from django.utils.formats import get_format, date_format, time_format, localize, localize_input, iter_format_modules from django.utils.formats import (get_format, date_format, time_format,
localize, localize_input, iter_format_modules, get_format_modules)
from django.utils.numberformat import format as nformat from django.utils.numberformat import format as nformat
from django.utils.safestring import mark_safe, SafeString, SafeUnicode from django.utils.safestring import mark_safe, SafeString, SafeUnicode
from django.utils.translation import (ugettext, ugettext_lazy, activate, from django.utils.translation import (ugettext, ugettext_lazy, activate,
@ -466,6 +467,19 @@ class FormattingTests(TestCase):
finally: finally:
settings.USE_L10N = old_l10n settings.USE_L10N = old_l10n
def test_get_format_modules_stability(self):
activate('de')
old_format_module_path = settings.FORMAT_MODULE_PATH
settings.FORMAT_MODULE_PATH = 'regressiontests.i18n.other.locale'
try:
settings.USE_L10N = True
old = "%r" % get_format_modules(reverse=True)
new = "%r" % get_format_modules(reverse=True) # second try
self.assertEqual(new, old, 'Value returned by get_formats_modules() must be preserved between calls.')
finally:
settings.FORMAT_MODULE_PATH = old_format_module_path
deactivate()
class MiscTests(TestCase): class MiscTests(TestCase):