Launchpad automatic translations update.
[odoo/odoo.git] / openerp-web.py
index 911b8fc..92b411d 100755 (executable)
@@ -1,58 +1,76 @@
 #!/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
+import werkzeug.contrib.fixers
+
+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)
 
 optparser = optparse.OptionParser()
-optparser.add_option("-p", "--port", dest="server.socket_port", default=8002,
-                     help="listening port", type="int", metavar="NUMBER")
-optparser.add_option("-s", "--session-path", dest="tools.sessions.storage_path",
-                     default=os.path.join(tempfile.gettempdir(), "cpsessions"),
+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="openerp.server.host",
+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="openerp.server.port", default=8069,
+optparser.add_option("--server-port", dest="server_port", default=8069,
                      help="OpenERP server port", type="int", metavar="NUMBER")
-optparser.add_option("--db-filter", dest="openerp.dbfilter", default='.*',
+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")
 
-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)
+server_options = optparse.OptionGroup(optparser, "Server configuration")
+server_options.add_option("-p", "--port", dest="socket_port", default=8002,
+                          help="listening port", type="int", metavar="NUMBER")
+server_options.add_option('--reloader', dest='reloader',
+                          default=False, action='store_true',
+                          help="Reload application when python files change")
+server_options.add_option('--no-serve-static', dest='serve_static',
+                          default=True, action='store_false',
+                          help="Do not serve static files via this server")
+server_options.add_option('--multi-threaded', dest='threaded',
+                          default=False, action='store_true',
+                          help="Spawn one thread per HTTP request")
+server_options.add_option('--proxy-mode', dest='proxy_mode',
+                          default=False, action='store_true',
+                          help="Enable correct behavior when behind a reverse proxy")
+optparser.add_option_group(server_options)
 
-import base
+logging_opts = optparse.OptionGroup(optparser, "Logging")
+logging_opts.add_option("--log-level", dest="log_level", type="choice",
+                        default='debug', help="Global logging level", metavar="LOG_LEVEL",
+                        choices=['debug', 'info', 'warning', 'error', 'critical'])
+logging_opts.add_option("--log-config", dest="log_config",
+                        help="Logging configuration file", metavar="FILE")
+optparser.add_option_group(logging_opts)
 
-def main(options):
-    # change the timezone of the program to the OpenERP server's assumed timezone
-    os.environ["TZ"] = "UTC"
+import web.common.dispatch
 
-    DEFAULT_CONFIG = {
-        'server.socket_host': '0.0.0.0',
-        'tools.sessions.on': True,
-        'tools.sessions.storage_type': 'file',
-        'tools.sessions.timeout': 60
-    }
+if __name__ == "__main__":
+    (options, args) = optparser.parse_args(sys.argv[1:])
+    options.backend =  'rpc'
 
-    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(options)
+    os.environ["TZ"] = "UTC"
 
-    if not os.path.exists(cherrypy.config['tools.sessions.storage_path']):
-        os.makedirs(cherrypy.config['tools.sessions.storage_path'], 0700)
+    if not options.log_config:
+        logging.basicConfig(level=getattr(logging, options.log_level.upper()))
+    else:
+        logging.config.fileConfig(options.log_config)
 
-    return base.common.Root()
+    app = web.common.dispatch.Root(options)
 
-if __name__ == "__main__":
-    (o, args) = optparser.parse_args(sys.argv[1:])
-    o = dict((k, v) for k, v in vars(o).iteritems() if v is not None)
+    if options.proxy_mode:
+        app = werkzeug.contrib.fixers.ProxyFix(app)
 
-    cherrypy.tree.mount(main(o))
-    cherrypy.server.subscribe()
-    cherrypy.engine.start()
-    cherrypy.engine.block()
+    werkzeug.serving.run_simple(
+        '0.0.0.0', options.socket_port, app,
+        use_reloader=options.reloader, threaded=options.threaded)