~hirt/ocb-web/6.1_ocb-web_gantt_progress

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env python
import json
import logging
import logging.config
import optparse
import os
import sys
import tempfile

import werkzeug.serving
import werkzeug.contrib.fixers

optparser = optparse.OptionParser()
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 databases", metavar="REGEXP")
optparser.add_option('--addons-path', dest='addons_path', default=[], action='append',
                    help="Path to addons directory", metavar="PATH")
optparser.add_option('--load', dest='server_wide_modules', default=['web'], action='append',
                    help="Load an additional module before login (by default only 'web' is loaded)", metavar="MODULE")

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)

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", default=os.path.join(os.path.dirname(__file__), "logging.json"),
                        help="Logging configuration file", metavar="FILE")
optparser.add_option_group(logging_opts)


if __name__ == "__main__":
    (options, args) = optparser.parse_args(sys.argv[1:])

    if not options.addons_path:
        path_root = os.path.dirname(os.path.abspath(__file__))
        path_addons = os.path.join(path_root, 'addons')
        if os.path.exists(path_addons):
            options.addons_path.append(path_addons)

    options.addons_path = [
        path[:-1] if path[-1] in r'\/' else path
        for path in options.addons_path
        if os.path.exists(path)
    ]

    for path_addons in options.addons_path:
        if path_addons not in sys.path:
            sys.path.insert(0, path_addons)

    try:
        import web.common.http
    except ImportError:
        optparser.error('Error Importing base web module. Check correctness of --addons-path.')

    options.backend =  'xmlrpc'
    os.environ["TZ"] = "UTC"

    if sys.version_info >= (2, 7) and os.path.exists(options.log_config):
        with open(options.log_config) as file:
            dct = json.load(file)
        logging.config.dictConfig(dct)
        logging.getLogger().setLevel(getattr(logging, options.log_level.upper()))
    else:
        logging.basicConfig(level=getattr(logging, options.log_level.upper()))

    app = web.common.http.Root(options, openerp_addons_namespace=False)

    if options.proxy_mode:
        app = werkzeug.contrib.fixers.ProxyFix(app)

    werkzeug.serving.run_simple(
        '0.0.0.0', options.socket_port, app,
        use_reloader=options.reloader, threaded=options.threaded)