[IMP] simplify localconnector's exception converter: use Python's facilities correctly

bzr revid: xmo@openerp.com-20120621103342-nea9yw135dl5lsta
This commit is contained in:
Xavier Morel 2012-06-21 12:33:42 +02:00
parent 7ee3c3f43d
commit a4004f0bd5
1 changed files with 15 additions and 20 deletions

View File

@ -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)