[IMP] misc renames
[odoo/odoo.git] / openerp-web.py
1 #!/usr/bin/env python
2 import optparse
3 import os
4 import sys
5 import tempfile
6 import logging
7 import logging.config
8
9 import werkzeug.serving
10 import werkzeug.contrib.fixers
11
12 path_root = os.path.dirname(os.path.abspath(__file__))
13 path_addons = os.path.join(path_root, 'addons')
14 if path_addons not in sys.path:
15     sys.path.insert(0, path_addons)
16
17 optparser = optparse.OptionParser()
18 optparser.add_option("-s", "--session-path", dest="session_storage",
19                      default=os.path.join(tempfile.gettempdir(), "oe-sessions"),
20                      help="directory used for session storage", metavar="DIR")
21 optparser.add_option("--server-host", dest="server_host",
22                      default='127.0.0.1', help="OpenERP server hostname", metavar="HOST")
23 optparser.add_option("--server-port", dest="server_port", default=8069,
24                      help="OpenERP server port", type="int", metavar="NUMBER")
25 optparser.add_option("--db-filter", dest="dbfilter", default='.*',
26                      help="Filter listed database", metavar="REGEXP")
27 optparser.add_option('--addons-path', dest='addons_path', default=[path_addons], action='append',
28                     help="Path do addons directory", metavar="PATH")
29
30 server_options = optparse.OptionGroup(optparser, "Server configuration")
31 server_options.add_option("-p", "--port", dest="socket_port", default=8002,
32                           help="listening port", type="int", metavar="NUMBER")
33 server_options.add_option('--reloader', dest='reloader',
34                           default=False, action='store_true',
35                           help="Reload application when python files change")
36 server_options.add_option('--no-serve-static', dest='serve_static',
37                           default=True, action='store_false',
38                           help="Do not serve static files via this server")
39 server_options.add_option('--multi-threaded', dest='threaded',
40                           default=False, action='store_true',
41                           help="Spawn one thread per HTTP request")
42 server_options.add_option('--proxy-mode', dest='proxy_mode',
43                           default=False, action='store_true',
44                           help="Enable correct behavior when behind a reverse proxy")
45 optparser.add_option_group(server_options)
46
47 logging_opts = optparse.OptionGroup(optparser, "Logging")
48 logging_opts.add_option("--log-level", dest="log_level", type="choice",
49                         default='debug', help="Global logging level", metavar="LOG_LEVEL",
50                         choices=['debug', 'info', 'warning', 'error', 'critical'])
51 logging_opts.add_option("--log-config", dest="log_config",
52                         help="Logging configuration file", metavar="FILE")
53 optparser.add_option_group(logging_opts)
54
55 import web.common.dispatch
56
57 if __name__ == "__main__":
58     (options, args) = optparser.parse_args(sys.argv[1:])
59     options.backend =  'xmlrpc'
60
61     os.environ["TZ"] = "UTC"
62
63     if not options.log_config:
64         logging.basicConfig(level=getattr(logging, options.log_level.upper()))
65     else:
66         logging.config.fileConfig(options.log_config)
67
68     app = web.common.dispatch.Root(options)
69
70     if options.proxy_mode:
71         app = werkzeug.contrib.fixers.ProxyFix(app)
72
73     werkzeug.serving.run_simple(
74         '0.0.0.0', options.socket_port, app,
75         use_reloader=options.reloader, threaded=options.threaded)
76