import time
import openerp
-import openerp.modules
import openerp.tools.config as config
import service.websrv_lib as websrv_lib
# This mimics SimpleXMLRPCDispatcher._marshaled_dispatch() for exception
# handling.
try:
- result = openerp.netsvc.dispatch_rpc(service, method, params)
+ result = openerp.netsvc.dispatch_rpc(service, method, params, None) # TODO auth
response = xmlrpclib.dumps((result,), methodresponse=1, allow_none=False, encoding=None)
- except openerp.exceptions.AccessError, e:
- fault = xmlrpclib.Fault(5, str(e))
- response = xmlrpclib.dumps(fault, allow_none=False, encoding=None)
- except openerp.exceptions.Warning, e:
- fault = xmlrpclib.Fault(4, str(e))
- response = xmlrpclib.dumps(fault, allow_none=False, encoding=None)
- except openerp.exceptions.AccessDenied, e:
- fault = xmlrpclib.Fault(3, str(e))
- response = xmlrpclib.dumps(fault, allow_none=False, encoding=None)
except openerp.netsvc.OpenERPDispatcherException, e:
- # TODO collapse this case with the next one.
- fault = xmlrpclib.Fault(2, openerp.tools.exception_to_unicode(e.exception) + '\n' + e.traceback)
+ fault = xmlrpclib.Fault(openerp.tools.exception_to_unicode(e.exception), e.traceback)
response = xmlrpclib.dumps(fault, allow_none=False, encoding=None)
except:
exc_type, exc_value, exc_tb = sys.exc_info()
def wsgi_xmlrpc(environ, start_response):
""" The main OpenERP WSGI handler."""
- if environ['REQUEST_METHOD'] == 'POST' and environ['PATH_INFO'].startswith('/openerp/6.1/xmlrpc'):
+ if environ['REQUEST_METHOD'] == 'POST' and environ['PATH_INFO'].startswith('/openerp/xmlrpc'):
length = int(environ['CONTENT_LENGTH'])
data = environ['wsgi.input'].read(length)
params, method = xmlrpclib.loads(data)
- path = environ['PATH_INFO'][len('/openerp/6.1/xmlrpc'):]
+ path = environ['PATH_INFO'][len('/openerp/xmlrpc'):]
if path.startswith('/'): path = path[1:]
if path.endswith('/'): p = path[:-1]
path = path.split('/')
- # All routes are hard-coded.
+ # All routes are hard-coded. Need a way to register addons-supplied handlers.
# No need for a db segment.
if len(path) == 1: