Fixed #15286 -- Don't show deprecation warning if project locale dir is included in LOCALE_PATHS. Thanks to Claude and Ramiro.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15508 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
e1e3f24371
commit
179fefcf7c
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Internationalization support.
|
Internationalization support.
|
||||||
"""
|
"""
|
||||||
|
import warnings
|
||||||
from os import path
|
from os import path
|
||||||
|
|
||||||
from django.utils.encoding import force_unicode
|
from django.utils.encoding import force_unicode
|
||||||
|
@ -41,17 +42,20 @@ class Trans(object):
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
if settings.USE_I18N:
|
if settings.USE_I18N:
|
||||||
from django.utils.translation import trans_real as trans
|
from django.utils.translation import trans_real as trans
|
||||||
|
# Make sure the project's locale dir isn't in LOCALE_PATHS
|
||||||
if settings.SETTINGS_MODULE is not None:
|
if settings.SETTINGS_MODULE is not None:
|
||||||
import warnings
|
|
||||||
parts = settings.SETTINGS_MODULE.split('.')
|
parts = settings.SETTINGS_MODULE.split('.')
|
||||||
project = import_module(parts[0])
|
project = import_module(parts[0])
|
||||||
if path.isdir(path.join(path.dirname(project.__file__), 'locale')):
|
project_locale_path = path.normpath(
|
||||||
warnings.warn(
|
path.join(path.dirname(project.__file__), 'locale'))
|
||||||
"Translations in the project directory aren't supported anymore. Use the LOCALE_PATHS setting instead.",
|
normalized_locale_paths = [path.normpath(locale_path)
|
||||||
PendingDeprecationWarning
|
for locale_path in settings.LOCALE_PATHS]
|
||||||
)
|
if (path.isdir(project_locale_path) and
|
||||||
|
not project_locale_path in normalized_locale_paths):
|
||||||
|
warnings.warn("Translations in the project directory "
|
||||||
|
"aren't supported anymore. Use the "
|
||||||
|
"LOCALE_PATHS setting instead.",
|
||||||
|
PendingDeprecationWarning)
|
||||||
else:
|
else:
|
||||||
from django.utils.translation import trans_null as trans
|
from django.utils.translation import trans_null as trans
|
||||||
setattr(self, real_name, getattr(trans, real_name))
|
setattr(self, real_name, getattr(trans, real_name))
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
from os.path import join, normpath, abspath, dirname
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
import django
|
||||||
|
from django.conf import settings
|
||||||
|
from django.test.utils import get_warnings_state, restore_warnings_state
|
||||||
|
from django.utils.unittest import TestCase
|
||||||
|
|
||||||
|
|
||||||
|
class DeprecationWarningTests(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.warning_state = get_warnings_state()
|
||||||
|
self.old_settings_module = settings.SETTINGS_MODULE
|
||||||
|
settings.SETTINGS_MODULE = 'regressiontests'
|
||||||
|
self.old_locale_paths = settings.LOCALE_PATHS
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
restore_warnings_state(self.warning_state)
|
||||||
|
settings.SETTINGS_MODULE = self.old_settings_module
|
||||||
|
settings.LOCALE_PATHS = self.old_locale_paths
|
||||||
|
|
||||||
|
def test_no_warn_if_project_and_locale_paths_overlap(self):
|
||||||
|
"""Test that PendingDeprecationWarning isn't generated when a deprecated project level locale/ subdir is also included in LOCALE_PATHS."""
|
||||||
|
project_path = join(dirname(abspath(__file__)), '..')
|
||||||
|
settings.LOCALE_PATHS += (normpath(join(project_path, 'locale')),)
|
||||||
|
warnings.filterwarnings('error', "Translations in the project directory aren't supported anymore\. Use the LOCALE_PATHS setting instead\.", PendingDeprecationWarning)
|
||||||
|
reload(django.utils.translation)
|
||||||
|
try:
|
||||||
|
django.utils.translation.ugettext('Time')
|
||||||
|
except PendingDeprecationWarning:
|
||||||
|
self.fail("PendingDeprecationWarning shouldn't be raised when settings/project locale and a LOCALE_PATHS member point to the same file system location.")
|
|
@ -24,6 +24,7 @@ from models import Company, TestModel
|
||||||
|
|
||||||
from commands.tests import *
|
from commands.tests import *
|
||||||
|
|
||||||
|
from test_warnings import DeprecationWarningTests
|
||||||
|
|
||||||
class TranslationTests(TestCase):
|
class TranslationTests(TestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue