[FIX] session: properly handle exceptions with unicode messages during dispatching

String formatting with an Exception param will use
str(Exception), raising an error if the exception
has non-ascii characters in the message.

bzr revid: odo@openerp.com-20130124140538-1wjjl4a12xnwn38o
This commit is contained in:
Olivier Dony 2013-01-24 15:05:38 +01:00
parent e7547a13db
commit 611ff620ce
1 changed files with 4 additions and 4 deletions

View File

@ -85,7 +85,7 @@ class OpenERPSession(object):
self.jsonp_requests = {} # FIXME use a LRU
def send(self, service_name, method, *args):
code_string = "warning -- %s\n\n%s"
code_string = u"warning -- %s\n\n%s"
try:
return openerp.netsvc.dispatch_rpc(service_name, method, args)
except openerp.osv.osv.except_osv, e:
@ -95,13 +95,13 @@ class OpenERPSession(object):
except openerp.exceptions.AccessError, e:
raise xmlrpclib.Fault(code_string % ("AccessError", e), '')
except openerp.exceptions.AccessDenied, e:
raise xmlrpclib.Fault('AccessDenied', str(e))
raise xmlrpclib.Fault('AccessDenied', openerp.tools.ustr(e))
except openerp.exceptions.DeferredException, e:
formatted_info = "".join(traceback.format_exception(*e.traceback))
raise xmlrpclib.Fault(openerp.tools.ustr(e.message), formatted_info)
raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)
except Exception, e:
formatted_info = "".join(traceback.format_exception(*(sys.exc_info())))
raise xmlrpclib.Fault(openerp.tools.exception_to_unicode(e), formatted_info)
raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)
def proxy(self, service):
return Service(self, service)