summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2011-11-08 17:09:42 +0100
committerAntony Lesuisse <al@openerp.com>2011-11-08 17:09:42 +0100
commit61823d98e9177aefa0e6aecd8750ce2bcb192e9a (patch)
treea6b2652b6575afb0af83d6b0fc6adf8c23e139b9 /addons/web/controllers/main.py
parentfe742469cd37c2b828d153b8c1f0ef9546ca69cd (diff)
parent5290ada81f998e29da7777116e317478c69d05e6 (diff)
[MERGE] qweb xml loading (chs)
bzr revid: al@openerp.com-20111108160942-lawx5l2brjq2hut8
Diffstat (limited to 'addons/web/controllers/main.py')
-rw-r--r--addons/web/controllers/main.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index a218962f84c..74285b1f444 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -24,6 +24,32 @@ openerpweb = web.common.http
# OpenERP Web web Controllers
#----------------------------------------------------------
+
+def concat_xml(file_list):
+ """Concatenate xml files
+ return (concat,timestamp)
+ concat: concatenation of file content
+ timestamp: max(os.path.getmtime of file_list)
+ """
+ root = None
+ files_timestamp = 0
+ for fname in file_list:
+ ftime = os.path.getmtime(fname)
+ if ftime > files_timestamp:
+ files_timestamp = ftime
+
+ xml = ElementTree.parse(fname).getroot()
+
+ if root is None:
+ root = ElementTree.Element(xml.tag)
+ #elif root.tag != xml.tag:
+ # raise ValueError("Root tags missmatch: %r != %r" % (root.tag, xml.tag))
+
+ for child in xml.getchildren():
+ root.append(child)
+ return ElementTree.tostring(root, 'utf-8'), files_timestamp
+
+
def concat_files(file_list, reader=None):
""" Concatenate file content
return (concat,timestamp)
@@ -104,6 +130,10 @@ class WebClient(openerpweb.Controller):
def jslist(self, req, mods=None):
return self.manifest_list(req, mods, 'js')
+ @openerpweb.jsonrequest
+ def qweblist(self, req, mods=None):
+ return self.manifest_list(req, mods, 'qweb')
+
@openerpweb.httprequest
def css(self, req, mods=None):
@@ -147,6 +177,14 @@ class WebClient(openerpweb.Controller):
return req.make_response(content, [('Content-Type', 'application/javascript')])
@openerpweb.httprequest
+ def qweb(self, req, mods=None):
+ files = [f[0] for f in self.manifest_glob(req, mods, 'qweb')]
+ content,timestamp = concat_xml(files)
+ # TODO use timestamp to set Last mofified date and E-tag
+ return req.make_response(content, [('Content-Type', 'text/xml')])
+
+
+ @openerpweb.httprequest
def home(self, req, s_action=None, **kw):
js = "\n ".join('<script type="text/javascript" src="%s"></script>'%i for i in self.manifest_list(req, None, 'js'))
css = "\n ".join('<link rel="stylesheet" href="%s">'%i for i in self.manifest_list(req, None, 'css'))