#!/usr/bin/env python
-import optparse,os,sys,tempfile
+import optparse
+import os
+import sys
+import tempfile
+import logging
+import logging.config
-import cherrypy
-import cherrypy.lib.static
+import werkzeug.serving
path_root = os.path.dirname(os.path.abspath(__file__))
path_addons = os.path.join(path_root, 'addons')
if path_addons not in sys.path:
sys.path.insert(0, path_addons)
-import base
+optparser = optparse.OptionParser()
+optparser.add_option("-p", "--port", dest="socket_port", default=8002,
+ help="listening port", type="int", metavar="NUMBER")
+optparser.add_option("-s", "--session-path", dest="session_storage",
+ default=os.path.join(tempfile.gettempdir(), "oe-sessions"),
+ help="directory used for session storage", metavar="DIR")
+optparser.add_option("--server-host", dest="server_host",
+ default='127.0.0.1', help="OpenERP server hostname", metavar="HOST")
+optparser.add_option("--server-port", dest="server_port", default=8069,
+ help="OpenERP server port", type="int", metavar="NUMBER")
+optparser.add_option("--db-filter", dest="dbfilter", default='.*',
+ help="Filter listed database", metavar="REGEXP")
+optparser.add_option('--addons-path', dest='addons_path', default=path_addons,
+ help="Path do addons directory", metavar="PATH")
+optparser.add_option('--no-serve-static', dest='serve_static',
+ default=True, action='store_false',
+ help="Do not serve static files via this server")
+optparser.add_option('--reloader', dest='reloader',
+ default=False, action='store_true',
+ help="Reload application when python files change")
+optparser.add_option("--log-level", dest="log_level",
+ default='debug', help="Log level", metavar="LOG_LEVEL")
+optparser.add_option("--log-config", dest="log_config",
+ default='', help="Log config file", metavar="LOG_CONFIG")
+optparser.add_option('--multi-threaded', dest='threaded',
+ default=False, action='store_true',
+ help="Use multiple threads to handle requests")
+
+import web.common.dispatch
+
+if __name__ == "__main__":
+ (options, args) = optparser.parse_args(sys.argv[1:])
+ options.backend = 'rpc'
-def main(argv):
- # change the timezone of the program to the OpenERP server's assumed timezone
os.environ["TZ"] = "UTC"
- DEFAULT_CONFIG = {
- 'server.socket_host': '0.0.0.0',
- 'tools.sessions.on': True,
- 'tools.sessions.storage_type': 'file',
- 'tools.sessions.timeout': 60
- }
-
- # Parse config
- op = optparse.OptionParser()
- op.add_option("-p", "--port", dest="server.socket_port", default=8002, help="listening port", type="int", metavar="NUMBER")
- op.add_option("-s", "--session-path", dest="tools.sessions.storage_path", default=os.path.join(tempfile.gettempdir(), "cpsessions"), help="directory used for session storage", metavar="DIR")
- op.add_option("--server-host", dest="openerp.server.host", default='127.0.0.1', help="OpenERP server hostname", metavar="HOST")
- op.add_option("--server-port", dest="openerp.server.port", default=8069, help="OpenERP server port", type="int", metavar="NUMBER")
- op.add_option("--db-filter", dest="openerp.dbfilter", default='.*', help="Filter listed database", metavar="REGEXP")
- (o, args) = op.parse_args(argv[1:])
- o = vars(o)
- for k in o.keys():
- if o[k] is None:
- del(o[k])
-
- # Setup and run cherrypy
- cherrypy.tree.mount(base.common.Root())
-
- cherrypy.config.update(config=DEFAULT_CONFIG)
- if os.path.exists(os.path.join(path_root,'openerp-web.cfg')):
- cherrypy.config.update(os.path.join(path_root,'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.makedirs(cherrypy.config['tools.sessions.storage_path'], 0700)
-
- cherrypy.server.subscribe()
- cherrypy.engine.start()
- cherrypy.engine.block()
+ if not options.log_config:
+ logging.basicConfig(level=getattr(logging, options.log_level.upper()))
+ else:
+ logging.config.fileConfig(options.log_config)
-if __name__ == "__main__":
- main(sys.argv)
+ app = web.common.dispatch.Root(options)
+
+ werkzeug.serving.run_simple(
+ '0.0.0.0', options.socket_port, app,
+ use_reloader=options.reloader, threaded=options.threaded)