diff --git a/openerpweb/openerpweb.py b/openerpweb/openerpweb.py index 33c5c14edb3..13864d3e026 100644 --- a/openerpweb/openerpweb.py +++ b/openerpweb/openerpweb.py @@ -74,8 +74,7 @@ class OpenERPSession(object): Used to store references to non-literal domains which need to be round-tripped to the client browser. """ - def __init__(self, server='127.0.0.1', port=8069, - model_factory=OpenERPModel): + def __init__(self, server='127.0.0.1', port=8069, model_factory=OpenERPModel): self._server = server self._port = port self._db = False @@ -234,11 +233,7 @@ class OpenERPSession(object): # OpenERP Web RequestHandler #---------------------------------------------------------- class JsonRequest(object): - """ JSON-RPC2 over HTTP POST using non standard POST encoding. - Difference with the standard: - - * the json string is passed as a form parameter named "request" - * method is currently ignored + """ JSON-RPC2 over HTTP. Sucessful request:: @@ -278,7 +273,9 @@ class JsonRequest(object): self.httpsession_id = "cookieid" self.httpsession = cherrypy.session self.session_id = self.params.pop("session_id", None) or uuid.uuid4().hex - self.session = self.httpsession.setdefault(self.session_id, OpenERPSession()) + host = cherrypy.config['openerp.server.host'] + port = cherrypy.config['openerp.server.port'] + self.session = self.httpsession.setdefault(self.session_id, OpenERPSession(host, port)) self.context = self.params.pop('context', None) return self.params @@ -369,7 +366,9 @@ class HttpRequest(object): self.httpsession_id = "cookieid" self.httpsession = cherrypy.session self.context = kw.get('context', {}) - self.session = self.httpsession.setdefault(kw.get('session_id', None), OpenERPSession()) + host = cherrypy.config['openerp.server.host'] + port = cherrypy.config['openerp.server.port'] + self.session = self.httpsession.setdefault(kw.get('session_id', None), OpenERPSession(host, port)) self.result = "" if request.method == 'GET': print "GET --> %s.%s %s %r" % (controller.__class__.__name__, f.__name__, request, kw) @@ -454,8 +453,10 @@ class Root(object): def main(argv): # change the timezone of the program to the OpenERP server's assumed timezone os.environ["TZ"] = "UTC" - + DEFAULT_CONFIG = { + 'openerp.server.host': '127.0.0.1', + 'openerp.server.port': 8069, 'server.socket_port': 8002, 'server.socket_host': '0.0.0.0', 'tools.sessions.on': True, @@ -463,13 +464,13 @@ def main(argv): 'tools.sessions.storage_path': os.path.join(tempfile.gettempdir(), "cpsessions"), 'tools.sessions.timeout': 60 } - + # Parse config op = optparse.OptionParser() - op.add_option("-p", "--port", dest="server.socket_port", help="listening port", - type="int", metavar="NUMBER") - op.add_option("-s", "--session-path", dest="tools.sessions.storage_path", - help="directory used for session storage", metavar="DIR") + op.add_option("-p", "--port", dest="server.socket_port", help="listening port", type="int", metavar="NUMBER") + op.add_option("-s", "--session-path", dest="tools.sessions.storage_path", help="directory used for session storage", metavar="DIR") + op.add_option("", "--server-host", dest="openerp.server.host", help="OpenERP server hostname", metavar="HOST") + op.add_option("", "--server-port", dest="openerp.server.port", help="OpenERP server port", type="int", metavar="NUMBER") (o, args) = op.parse_args(argv[1:]) o = vars(o) for k in o.keys(): @@ -478,19 +479,17 @@ def main(argv): # Setup and run cherrypy cherrypy.tree.mount(Root()) - + cherrypy.config.update(config=DEFAULT_CONFIG) - if os.path.exists(os.path.join(os.path.dirname( - os.path.dirname(__file__)),'openerp-web.cfg')): - cherrypy.config.update(os.path.join(os.path.dirname( - os.path.dirname(__file__)),'openerp-web.cfg')) + if os.path.exists(os.path.join(os.path.dirname( os.path.dirname(__file__)),'openerp-web.cfg')): + cherrypy.config.update(os.path.join(os.path.dirname( os.path.dirname(__file__)),'openerp-web.cfg')) if os.path.exists(os.path.expanduser('~/.openerp_webrc')): cherrypy.config.update(os.path.expanduser('~/.openerp_webrc')) cherrypy.config.update(o) - + if not os.path.exists(cherrypy.config['tools.sessions.storage_path']): - os.mkdir(cherrypy.config['tools.sessions.storage_path'], 0700) - + os.makedirs(cherrypy.config['tools.sessions.storage_path'], 0700) + cherrypy.server.subscribe() cherrypy.engine.start() cherrypy.engine.block()