[1.7.x] Ignored STATIC_ROOT and MEDIA_ROOT in makemessages

Also alleviate issues with weird file names typically found in
MEDIA_ROOT directories (#23010).
Thanks Tim Graham for the review.
Backport of 28efafa24c from master.
This commit is contained in:
Claude Paroz 2014-07-15 11:10:50 +02:00
parent 01515ebaa4
commit d6f293ad1b
2 changed files with 27 additions and 13 deletions

View File

@ -10,6 +10,7 @@ from itertools import dropwhile
from optparse import make_option
import django
from django.conf import settings
from django.core.management.base import CommandError, NoArgsCommand
from django.core.management.utils import (handle_extensions, find_command,
popen_wrapper)
@ -57,8 +58,6 @@ class TranslatableFile(object):
Uses the xgettext GNU gettext utility.
"""
from django.conf import settings
from django.utils.translation import templatize
if command.verbosity > 1:
@ -211,9 +210,20 @@ class Command(NoArgsCommand):
process_all = options.get('all')
extensions = options.get('extensions')
self.symlinks = options.get('symlinks')
# Need to ensure that the i18n framework is enabled
if settings.configured:
settings.USE_I18N = True
else:
settings.configure(USE_I18N=True)
ignore_patterns = options.get('ignore_patterns')
if options.get('use_default_ignore_patterns'):
ignore_patterns += ['CVS', '.*', '*~', '*.pyc']
base_path = os.path.abspath('.')
for path in (settings.MEDIA_ROOT, settings.STATIC_ROOT):
if path and path.startswith(base_path):
ignore_patterns.append('%s*' % path[len(base_path) + 1:])
self.ignore_patterns = list(set(ignore_patterns))
# Avoid messing with mutable class variables
@ -244,13 +254,6 @@ class Command(NoArgsCommand):
raise CommandError("Type '%s help %s' for usage information." % (
os.path.basename(sys.argv[0]), sys.argv[1]))
# Need to ensure that the i18n framework is enabled
from django.conf import settings
if settings.configured:
settings.USE_I18N = True
else:
settings.configure(USE_I18N=True)
if self.verbosity > 1:
self.stdout.write('examining files with the extensions: %s\n'
% get_text_list(list(self.extensions), 'and'))

View File

@ -22,6 +22,7 @@ from django.utils.translation import TranslatorCommentWarning
LOCALE = 'de'
has_xgettext = find_command('xgettext')
this_directory = os.path.dirname(upath(__file__))
@skipUnless(has_xgettext, 'xgettext is mandatory for extraction tests')
@ -31,8 +32,7 @@ class ExtractorTests(SimpleTestCase):
def setUp(self):
self._cwd = os.getcwd()
self.test_dir = os.path.abspath(
os.path.join(os.path.dirname(upath(__file__)), 'commands'))
self.test_dir = os.path.abspath(os.path.join(this_directory, 'commands'))
def _rmrf(self, dname):
if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir:
@ -361,6 +361,17 @@ class IgnoredExtractorTests(ExtractorTests):
self.assertNotMsgId('This should be ignored.', po_contents)
self.assertNotMsgId('This should be ignored too.', po_contents)
@override_settings(
STATIC_ROOT=os.path.join(this_directory, 'commands', 'static_root/'),
MEDIA_ROOT=os.path.join(this_directory, 'commands', 'media_root/'))
def test_media_static_dirs_ignored(self):
os.chdir(self.test_dir)
stdout = StringIO()
management.call_command('makemessages', locale=[LOCALE], verbosity=2, stdout=stdout)
data = stdout.getvalue()
self.assertIn("ignoring directory static_root", data)
self.assertIn("ignoring directory media_root", data)
class SymlinkExtractorTests(ExtractorTests):
@ -530,7 +541,7 @@ class MultipleLocaleExtractionTests(ExtractorTests):
class CustomLayoutExtractionTests(ExtractorTests):
def setUp(self):
self._cwd = os.getcwd()
self.test_dir = os.path.join(os.path.dirname(upath(__file__)), 'project_dir')
self.test_dir = os.path.join(this_directory, 'project_dir')
def test_no_locale_raises(self):
os.chdir(self.test_dir)
@ -540,7 +551,7 @@ class CustomLayoutExtractionTests(ExtractorTests):
@override_settings(
LOCALE_PATHS=(os.path.join(
os.path.dirname(upath(__file__)), 'project_dir', 'project_locale'),)
this_directory, 'project_dir', 'project_locale'),)
)
def test_project_locale_paths(self):
"""