From a4004f0bd53f2a7badf71db6af676da66e4825b8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 21 Jun 2012 12:33:42 +0200 Subject: [PATCH] [IMP] simplify localconnector's exception converter: use Python's facilities correctly bzr revid: xmo@openerp.com-20120621103342-nea9yw135dl5lsta --- addons/web/common/http.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/addons/web/common/http.py b/addons/web/common/http.py index 722c7748ce7..0305a3e1ed3 100644 --- a/addons/web/common/http.py +++ b/addons/web/common/http.py @@ -590,25 +590,20 @@ class LocalConnector(openerplib.Connector): import xmlrpclib code_string = "warning -- %s\n\n%s" try: - result = openerp.netsvc.dispatch_rpc(service_name, method, args) - except Exception,e: + return openerp.netsvc.dispatch_rpc(service_name, method, args) + except openerp.osv.osv.except_osv, e: # TODO change the except to raise LibException instead of their emulated xmlrpc fault - if isinstance(e, openerp.osv.osv.except_osv): - fault = xmlrpclib.Fault(code_string % (e.name, e.value), '') - elif isinstance(e, openerp.exceptions.Warning): - fault = xmlrpclib.Fault(code_string % ("Warning", e), '') - elif isinstance(e, openerp.exceptions.AccessError): - fault = xmlrpclib.Fault(code_string % ("AccessError", e), '') - elif isinstance(e, openerp.exceptions.AccessDenied): - fault = xmlrpclib.Fault('AccessDenied', str(e)) - elif isinstance(e, openerp.exceptions.DeferredException): - info = e.traceback - formatted_info = "".join(traceback.format_exception(*info)) - fault = xmlrpclib.Fault(openerp.tools.ustr(e.message), formatted_info) - else: - info = sys.exc_info() - formatted_info = "".join(traceback.format_exception(*info)) - fault = xmlrpclib.Fault(openerp.tools.exception_to_unicode(e), formatted_info) - raise fault - return result + raise xmlrpclib.Fault(code_string % (e.name, e.value), '') + except openerp.exceptions.Warning, e: + raise xmlrpclib.Fault(code_string % ("Warning", e), '') + except openerp.exceptions.AccessError, e: + raise xmlrpclib.Fault(code_string % ("AccessError", e), '') + except openerp.exceptions.AccessDenied, e: + raise xmlrpclib.Fault('AccessDenied', str(e)) + except openerp.exceptions.DeferredException, e: + formatted_info = "".join(traceback.format_exception(*e.traceback)) + raise xmlrpclib.Fault(openerp.tools.ustr(e.message), 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)