[IMP] deprecate web_preload in favor of --load, server_wide_modules config option
bzr revid: al@openerp.com-20110930201018-aw9s26iqyd6rns05
This commit is contained in:
parent
ff1ca3c4fb
commit
4ec1113d94
|
@ -16,6 +16,7 @@ def wsgi_postload():
|
|||
_logger.info("embedded mode")
|
||||
o = Options()
|
||||
o.dbfilter = openerp.tools.config['dbfilter']
|
||||
o.server_wide_modules = openerp.conf.server_wide_modules or ['web']
|
||||
o.session_storage = os.path.join(tempfile.gettempdir(), "oe-sessions")
|
||||
o.addons_path = openerp.modules.module.ad_paths
|
||||
o.serve_static = True
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"depends" : [],
|
||||
'active': True,
|
||||
'post_load' : 'wsgi_postload',
|
||||
'web_preload' : True,
|
||||
'js' : [
|
||||
"static/lib/datejs/globalization/en-US.js",
|
||||
"static/lib/datejs/core.js",
|
||||
|
|
|
@ -68,29 +68,6 @@ class Xml2Json:
|
|||
# OpenERP Web web Controllers
|
||||
#----------------------------------------------------------
|
||||
|
||||
def manifest_preload():
|
||||
modules = [k for k,v in openerpweb.addons_manifest.items() if v.get('web_preload')]
|
||||
return modules
|
||||
|
||||
def manifest_addons(addons):
|
||||
if addons==None:
|
||||
addons = manifest_preload()
|
||||
else:
|
||||
addons = addons.split(',')
|
||||
return addons
|
||||
|
||||
def manifest_glob(addons, key):
|
||||
addons = manifest_addons(addons)
|
||||
files = []
|
||||
for addon in addons:
|
||||
manifest = openerpweb.addons_manifest.get(addon, {})
|
||||
addons_path = manifest['addons_path']
|
||||
globlist = manifest.get(key, [])
|
||||
for pattern in globlist:
|
||||
for path in glob.glob(os.path.join(addons_path, addon, pattern)):
|
||||
files.append(path[len(addons_path):])
|
||||
return files
|
||||
|
||||
# TODO change into concat_file(addons,key) taking care of addons_path
|
||||
def concat_files(addons_path, file_list):
|
||||
""" Concatenate file content
|
||||
|
@ -131,24 +108,45 @@ home_template = textwrap.dedent("""<!DOCTYPE html>
|
|||
class WebClient(openerpweb.Controller):
|
||||
_cp_path = "/web/webclient"
|
||||
|
||||
def server_wide_modules(self, req):
|
||||
addons = [i for i in req.config.server_wide_modules if i in openerpweb.addons_manifest]
|
||||
return addons
|
||||
|
||||
def manifest_glob(self, req, addons, key):
|
||||
if addons==None:
|
||||
addons = self.server_wide_modules(req)
|
||||
else:
|
||||
addons = addons.split(',')
|
||||
files = []
|
||||
for addon in addons:
|
||||
manifest = openerpweb.addons_manifest.get(addon, None)
|
||||
if not manifest:
|
||||
continue
|
||||
addons_path = manifest['addons_path']
|
||||
globlist = manifest.get(key, [])
|
||||
for pattern in globlist:
|
||||
for path in glob.glob(os.path.join(addons_path, addon, pattern)):
|
||||
files.append(path[len(addons_path):])
|
||||
return files
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
def csslist(self, req, mods=None):
|
||||
return manifest_glob(mods, 'css')
|
||||
return self.manifest_glob(req, mods, 'css')
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
def jslist(self, req, mods=None):
|
||||
return manifest_glob(mods, 'js')
|
||||
return self.manifest_glob(req, mods, 'js')
|
||||
|
||||
@openerpweb.httprequest
|
||||
def css(self, req, mods=None):
|
||||
files = manifest_glob(mods, 'css')
|
||||
files = self.manifest_glob(req, mods, 'css')
|
||||
content,timestamp = concat_files(req.config.addons_path, files)
|
||||
# TODO request set the Date of last modif and Etag
|
||||
return req.make_response(content, [('Content-Type', 'text/css')])
|
||||
|
||||
@openerpweb.httprequest
|
||||
def js(self, req, mods=None):
|
||||
files = manifest_glob(mods, 'js')
|
||||
files = self.manifest_glob(req, mods, 'js')
|
||||
content,timestamp = concat_files(req.config.addons_path, files)
|
||||
# TODO request set the Date of last modif and Etag
|
||||
return req.make_response(content, [('Content-Type', 'application/javascript')])
|
||||
|
@ -158,19 +156,19 @@ class WebClient(openerpweb.Controller):
|
|||
# script tags
|
||||
jslist = ['/web/webclient/js']
|
||||
if req.debug:
|
||||
jslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(None, 'js')]
|
||||
jslist = [i + '?debug=' + str(time.time()) for i in self.manifest_glob(req, None, 'js')]
|
||||
js = "\n ".join(['<script type="text/javascript" src="%s"></script>'%i for i in jslist])
|
||||
|
||||
# css tags
|
||||
csslist = ['/web/webclient/css']
|
||||
if req.debug:
|
||||
csslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(None, 'css')]
|
||||
csslist = [i + '?debug=' + str(time.time()) for i in self.manifest_glob(req, None, 'css')]
|
||||
css = "\n ".join(['<link rel="stylesheet" href="%s">'%i for i in csslist])
|
||||
|
||||
r = home_template % {
|
||||
'javascript': js,
|
||||
'css': css,
|
||||
'modules': simplejson.dumps(manifest_preload()),
|
||||
'modules': simplejson.dumps(self.server_wide_modules(req)),
|
||||
}
|
||||
return r
|
||||
|
||||
|
@ -364,7 +362,7 @@ class Session(openerpweb.Controller):
|
|||
mods = []
|
||||
for name, manifest in openerpweb.addons_manifest.items():
|
||||
# TODO replace by ir.module.module installed web
|
||||
if not manifest.get('web_preload') and manifest.get('active', True):
|
||||
if name not in req.config.server_wide_modules and manifest.get('active', True):
|
||||
mods.append(name)
|
||||
return mods
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@ 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")
|
||||
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")
|
||||
|
||||
server_options = optparse.OptionGroup(optparser, "Server configuration")
|
||||
server_options.add_option("-p", "--port", dest="socket_port", default=8002,
|
||||
|
|
Loading…
Reference in New Issue