diff options
| author | Antony Lesuisse <al@openerp.com> | 2011-11-08 17:09:42 +0100 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2011-11-08 17:09:42 +0100 |
| commit | 61823d98e9177aefa0e6aecd8750ce2bcb192e9a (patch) | |
| tree | a6b2652b6575afb0af83d6b0fc6adf8c23e139b9 /addons/web/controllers/main.py | |
| parent | fe742469cd37c2b828d153b8c1f0ef9546ca69cd (diff) | |
| parent | 5290ada81f998e29da7777116e317478c69d05e6 (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.py | 38 |
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')) |
