mirror of https://github.com/django/django.git
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.
This commit is contained in:
parent
0154965392
commit
28efafa24c
|
@ -9,6 +9,7 @@ import sys
|
||||||
from itertools import dropwhile
|
from itertools import dropwhile
|
||||||
|
|
||||||
import django
|
import django
|
||||||
|
from django.conf import settings
|
||||||
from django.core.management.base import CommandError, BaseCommand
|
from django.core.management.base import CommandError, BaseCommand
|
||||||
from django.core.management.utils import (handle_extensions, find_command,
|
from django.core.management.utils import (handle_extensions, find_command,
|
||||||
popen_wrapper)
|
popen_wrapper)
|
||||||
|
@ -56,8 +57,6 @@ class TranslatableFile(object):
|
||||||
|
|
||||||
Uses the xgettext GNU gettext utility.
|
Uses the xgettext GNU gettext utility.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.utils.translation import templatize
|
from django.utils.translation import templatize
|
||||||
|
|
||||||
if command.verbosity > 1:
|
if command.verbosity > 1:
|
||||||
|
@ -218,9 +217,20 @@ class Command(BaseCommand):
|
||||||
process_all = options.get('all')
|
process_all = options.get('all')
|
||||||
extensions = options.get('extensions')
|
extensions = options.get('extensions')
|
||||||
self.symlinks = options.get('symlinks')
|
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')
|
ignore_patterns = options.get('ignore_patterns')
|
||||||
if options.get('use_default_ignore_patterns'):
|
if options.get('use_default_ignore_patterns'):
|
||||||
ignore_patterns += ['CVS', '.*', '*~', '*.pyc']
|
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))
|
self.ignore_patterns = list(set(ignore_patterns))
|
||||||
|
|
||||||
# Avoid messing with mutable class variables
|
# Avoid messing with mutable class variables
|
||||||
|
@ -251,13 +261,6 @@ class Command(BaseCommand):
|
||||||
raise CommandError("Type '%s help %s' for usage information." % (
|
raise CommandError("Type '%s help %s' for usage information." % (
|
||||||
os.path.basename(sys.argv[0]), sys.argv[1]))
|
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:
|
if self.verbosity > 1:
|
||||||
self.stdout.write('examining files with the extensions: %s\n'
|
self.stdout.write('examining files with the extensions: %s\n'
|
||||||
% get_text_list(list(self.extensions), 'and'))
|
% get_text_list(list(self.extensions), 'and'))
|
||||||
|
|
|
@ -25,12 +25,13 @@ from django.utils.translation import TranslatorCommentWarning
|
||||||
|
|
||||||
LOCALE = 'de'
|
LOCALE = 'de'
|
||||||
has_xgettext = find_command('xgettext')
|
has_xgettext = find_command('xgettext')
|
||||||
|
this_directory = os.path.dirname(upath(__file__))
|
||||||
|
|
||||||
|
|
||||||
@skipUnless(has_xgettext, 'xgettext is mandatory for extraction tests')
|
@skipUnless(has_xgettext, 'xgettext is mandatory for extraction tests')
|
||||||
class ExtractorTests(SimpleTestCase):
|
class ExtractorTests(SimpleTestCase):
|
||||||
|
|
||||||
test_dir = os.path.abspath(os.path.join(os.path.dirname(upath(__file__)), 'commands'))
|
test_dir = os.path.abspath(os.path.join(this_directory, 'commands'))
|
||||||
|
|
||||||
PO_FILE = 'locale/%s/LC_MESSAGES/django.po' % LOCALE
|
PO_FILE = 'locale/%s/LC_MESSAGES/django.po' % LOCALE
|
||||||
|
|
||||||
|
@ -378,6 +379,17 @@ class IgnoredExtractorTests(ExtractorTests):
|
||||||
self.assertNotMsgId('This should be ignored.', po_contents)
|
self.assertNotMsgId('This should be ignored.', po_contents)
|
||||||
self.assertNotMsgId('This should be ignored too.', 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):
|
class SymlinkExtractorTests(ExtractorTests):
|
||||||
|
|
||||||
|
@ -550,7 +562,7 @@ class ExcludedLocaleExtractionTests(ExtractorTests):
|
||||||
LOCALES = ['en', 'fr', 'it']
|
LOCALES = ['en', 'fr', 'it']
|
||||||
PO_FILE = 'locale/%s/LC_MESSAGES/django.po'
|
PO_FILE = 'locale/%s/LC_MESSAGES/django.po'
|
||||||
|
|
||||||
test_dir = os.path.abspath(os.path.join(os.path.dirname(upath(__file__)), 'exclude'))
|
test_dir = os.path.abspath(os.path.join(this_directory, 'exclude'))
|
||||||
|
|
||||||
def _set_times_for_all_po_files(self):
|
def _set_times_for_all_po_files(self):
|
||||||
"""
|
"""
|
||||||
|
@ -608,7 +620,7 @@ class CustomLayoutExtractionTests(ExtractorTests):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self._cwd = os.getcwd()
|
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):
|
def test_no_locale_raises(self):
|
||||||
os.chdir(self.test_dir)
|
os.chdir(self.test_dir)
|
||||||
|
@ -618,7 +630,7 @@ class CustomLayoutExtractionTests(ExtractorTests):
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
LOCALE_PATHS=(os.path.join(
|
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):
|
def test_project_locale_paths(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue