mirror of https://github.com/django/django.git
Fixed #11118 -- Made management command BaseCommand restore locale after execution.
Thanks rvdrijst for the report and initial patch and Claude Paroz for enhancing it. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17077 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
90d3697417
commit
e92b3b723f
|
@ -203,9 +203,11 @@ class BaseCommand(object):
|
|||
# like permissions, and those shouldn't contain any translations.
|
||||
# But only do this if we can assume we have a working settings file,
|
||||
# because django.utils.translation requires settings.
|
||||
saved_lang = None
|
||||
if self.can_import_settings:
|
||||
try:
|
||||
from django.utils import translation
|
||||
saved_lang = translation.get_language()
|
||||
translation.activate('en-us')
|
||||
except ImportError, e:
|
||||
# If settings should be available, but aren't,
|
||||
|
@ -232,6 +234,8 @@ class BaseCommand(object):
|
|||
except CommandError, e:
|
||||
self.stderr.write(smart_str(self.style.ERROR('Error: %s\n' % e)))
|
||||
sys.exit(1)
|
||||
if saved_lang is not None:
|
||||
translation.activate(saved_lang)
|
||||
|
||||
def validate(self, app=None, display_num_errors=False):
|
||||
"""
|
||||
|
|
|
@ -3,6 +3,7 @@ from StringIO import StringIO
|
|||
from django.core import management
|
||||
from django.core.management.base import CommandError
|
||||
from django.test import TestCase
|
||||
from django.utils import translation
|
||||
|
||||
|
||||
class CommandTests(TestCase):
|
||||
|
@ -18,5 +19,11 @@ class CommandTests(TestCase):
|
|||
self.assertEqual(out.getvalue(),
|
||||
"I don't feel like dancing Jive.")
|
||||
|
||||
def test_language_preserved(self):
|
||||
out = StringIO()
|
||||
with translation.override('fr'):
|
||||
management.call_command('dance', stdout=out)
|
||||
self.assertEqual(translation.get_language(), 'fr')
|
||||
|
||||
def test_explode(self):
|
||||
self.assertRaises(CommandError, management.call_command, ('explode',))
|
||||
self.assertRaises(CommandError, management.call_command, ('explode',))
|
||||
|
|
Loading…
Reference in New Issue