diff options
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 6cc46b476a9..9f894dc9673 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): """ Concatenate file content return (concat,timestamp) @@ -98,6 +124,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): files = [f[0] for f in self.manifest_glob(req, mods, 'css')] @@ -113,6 +143,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')) |
