Merge "Enhance exception translation to better handle NeutronExceptions"

This commit is contained in:
Jenkins 2013-09-15 23:44:34 +00:00 committed by Gerrit Code Review
commit 0b92a19bb3
3 changed files with 14 additions and 9 deletions

View File

@ -147,9 +147,12 @@ def translate(translatable, locale):
was not translated
"""
localize = gettextutils.get_localized_message
if isinstance(translatable, Exception):
if isinstance(translatable, exceptions.NeutronException):
translatable.msg = localize(translatable.msg, locale)
elif isinstance(translatable, webob.exc.HTTPError):
translatable.detail = localize(translatable.detail, locale)
elif isinstance(translatable, Exception):
translatable.message = localize(translatable.message, locale)
if isinstance(translatable, webob.exc.HTTPError):
translatable.detail = localize(translatable.detail, locale)
return translatable
return localize(translatable, locale)
else:
return localize(translatable, locale)
return translatable

View File

@ -34,6 +34,7 @@ class NeutronException(Exception):
def __init__(self, **kwargs):
try:
super(NeutronException, self).__init__(self.message % kwargs)
self.msg = self.message % kwargs
except Exception:
if _FATAL_EXCEPTION_FORMAT_ERRORS:
raise
@ -41,6 +42,9 @@ class NeutronException(Exception):
# at least get the core message out if something happened
super(NeutronException, self).__init__(self.message)
def __unicode__(self):
return unicode(self.msg)
class BadRequest(NeutronException):
message = _('Bad %(resource)s request: %(msg)s')

View File

@ -160,8 +160,7 @@ class ResourceTestCase(base.BaseTestCase):
self.assertEqual(wsgi.XMLDeserializer().deserialize(res.body),
expected_res)
@mock.patch('neutron.openstack.common.gettextutils.Message.data',
new_callable=mock.PropertyMock)
@mock.patch('neutron.openstack.common.gettextutils.get_localized_message')
def test_unmapped_neutron_error_localized(self, mock_translation):
gettextutils.install('blaa', lazy=True)
msg_translation = 'Translated error'
@ -223,8 +222,7 @@ class ResourceTestCase(base.BaseTestCase):
self.assertEqual(wsgi.XMLDeserializer().deserialize(res.body),
expected_res)
@mock.patch('neutron.openstack.common.gettextutils.Message.data',
new_callable=mock.PropertyMock)
@mock.patch('neutron.openstack.common.gettextutils.get_localized_message')
def test_mapped_neutron_error_localized(self, mock_translation):
gettextutils.install('blaa', lazy=True)
msg_translation = 'Translated error'