X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=openerp-web;h=3340b95646e69d9abb2078b4e264a272ecd5de34;hb=112da954ffb38452c3c948f015f85d38edcdeb2d;hp=fe33585a2337598c59eabb26c969586169dc213c;hpb=c3b6ba715702d6bd7d43d87af1adbf3bcd0bd505;p=odoo%2Fodoo.git diff --git a/openerp-web b/openerp-web index fe33585..3340b95 100755 --- a/openerp-web +++ b/openerp-web @@ -1,34 +1,29 @@ #!/usr/bin/env python +import json +import logging +import logging.config import optparse import os import sys -import json import tempfile -import logging -import logging.config 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("-s", "--session-path", dest="session_storage", default=os.path.join(tempfile.gettempdir(), "oe-sessions"), - help="directory used for session storage", metavar="DIR") + 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], action='append', - help="Path do addons directory", metavar="PATH") + 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 a additional module before login (by default only 'web' is loaded)", metavar="MODULE") + 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, @@ -55,23 +50,62 @@ logging_opts.add_option("--log-config", dest="log_config", default=os.path.join( help="Logging configuration file", metavar="FILE") optparser.add_option_group(logging_opts) -import web.common.http +testing_opts = optparse.OptionGroup(optparser, "Testing") +testing_opts.add_option('--test-mode', dest='test_mode', + action='store_true', default=False, + help="Starts test mode, which provides a few" + " (utterly unsafe) APIs for testing purposes and" + " sets up a special connector which always raises" + " errors on tentative server access. These errors" + " serialize RPC query information (service," + " method, arguments list) in the fault_code" + " attribute of the error object returned to the" + " client. This lets javascript code assert the" \ + " XMLRPC consequences of its queries.") +optparser.add_option_group(testing_opts) if __name__ == "__main__": (options, args) = optparser.parse_args(sys.argv[1:]) - options.backend = 'xmlrpc' + 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): + if options.test_mode: + import web.test_support + import web.test_support.controllers + options.connector = web.test_support.TestConnector() + logging.getLogger('werkzeug').setLevel(logging.WARNING) + + 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())) + 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) + app = web.common.http.Root(options, openerp_addons_namespace=False) if options.proxy_mode: app = werkzeug.contrib.fixers.ProxyFix(app)