Christophe (OpenERP) has proposed merging 
lp:~openerp-dev/openerp-web/trunk-nodebug-chs into lp:openerp-web.

Requested reviews:
  OpenERP R&D Web Team (openerp-dev-web)

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-nodebug-chs/+merge/79414
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-nodebug-chs/+merge/79414
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openerp-web/trunk-nodebug-chs.
=== modified file 'addons/web/controllers/main.py'
--- addons/web/controllers/main.py	2011-10-06 15:39:59 +0000
+++ addons/web/controllers/main.py	2011-10-14 15:34:24 +0000
@@ -25,8 +25,7 @@
 # OpenERP Web web Controllers
 #----------------------------------------------------------
 
-# TODO change into concat_file(addons,key) taking care of addons_path
-def concat_files(addons_path, file_list):
+def concat_files(file_list):
     """ Concatenate file content
     return (concat,timestamp)
     concat: concatenation of file content
@@ -34,8 +33,7 @@
     """
     files_content = []
     files_timestamp = 0
-    for i in file_list:
-        fname = os.path.join(addons_path, i[1:])
+    for fname in file_list:
         ftime = os.path.getmtime(fname)
         if ftime > files_timestamp:
             files_timestamp = ftime
@@ -70,57 +68,54 @@
         return addons
 
     def manifest_glob(self, req, addons, key):
-        if addons==None:
+        if addons is 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']
+            addons_path = os.path.join(manifest['addons_path'], '')[:-1]    # ensure does not ends with /
             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
+                for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
+                    yield path, path[len(addons_path):]
+
+    def _list(self, req, mods, extension):
+        if not req.debug:
+            path = '/web/webclient/' + extension
+            if mods is not None:
+                path += '?mods=' + mods
+            return [path]
+        return ['%s?debug=%s' % (wp, os.path.getmtime(fp)) for fp, wp in self.manifest_glob(req, mods, extension)]
 
     @openerpweb.jsonrequest
     def csslist(self, req, mods=None):
-        return self.manifest_glob(req, mods, 'css')
+        return self._list(req, mods, 'css')
 
     @openerpweb.jsonrequest
     def jslist(self, req, mods=None):
-        return self.manifest_glob(req, mods, 'js')
+        return self._list(req, mods, 'js')
 
     @openerpweb.httprequest
     def css(self, req, mods=None):
-        files = self.manifest_glob(req, mods, 'css')
-        content,timestamp = concat_files(req.config.addons_path, files)
+        files = map(operator.itemgetter(0), self.manifest_glob(req, mods, 'css'))
+        content,timestamp = concat_files(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 = self.manifest_glob(req, mods, 'js')
-        content,timestamp = concat_files(req.config.addons_path, files)
+        files = map(operator.itemgetter(0), self.manifest_glob(req, mods, 'js'))
+        content,timestamp = concat_files(files)
         # TODO request set the Date of last modif and Etag
         return req.make_response(content, [('Content-Type', 'application/javascript')])
 
     @openerpweb.httprequest
     def home(self, req, s_action=None, **kw):
-        # script tags
-        jslist = ['/web/webclient/js']
-        if req.debug:
-            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 self.manifest_glob(req, None, 'css')]
-        css = "\n        ".join(['<link rel="stylesheet" href="%s">'%i for i in csslist])
+        js = "\n        ".join('<script type="text/javascript" src="%s"></script>'%i for i in self._list(req, None, 'js'))
+        css = "\n        ".join('<link rel="stylesheet" href="%s">'%i for i in self._list(req, None, 'css'))
 
         r = home_template % {
             'javascript': js,

=== modified file 'addons/web/static/src/js/core.js'
--- addons/web/static/src/js/core.js	2011-10-14 00:30:56 +0000
+++ addons/web/static/src/js/core.js	2011-10-14 15:34:24 +0000
@@ -384,6 +384,7 @@
         var self = this;
         // Construct a JSON-RPC2 request, method is currently unused
         params.session_id = this.session_id;
+        if (this.debug) params.debug = 1;
 
         // Call using the rpc_mode
         var deferred = $.Deferred();
@@ -566,15 +567,11 @@
                 var file_list = ["/web/static/lib/datejs/globalization/" +
                     self.user_context.lang.replace("_", "-") + ".js"
                 ];
-                if(self.debug) {
-                    self.rpc('/web/webclient/csslist', {"mods": modules}, self.do_load_css);
-                    self.rpc('/web/webclient/jslist', {"mods": modules}, function(files) {
-                        self.do_load_js(file_list.concat(files));
-                    });
-                } else {
-                    self.do_load_css(["/web/webclient/css?mods="+modules]);
-                    self.do_load_js(file_list.concat(["/web/webclient/js?mods="+modules]));
-                }
+
+                self.rpc('/web/webclient/csslist', {"mods": modules}, self.do_load_css);
+                self.rpc('/web/webclient/jslist', {"mods": modules}, function(files) {
+                    self.do_load_js(file_list.concat(files));
+                });
                 openerp._modules_loaded = true;
             });
         });
@@ -583,7 +580,7 @@
         var self = this;
         _.each(files, function (file) {
             $('head').append($('<link>', {
-                'href': file + (self.debug ? '?debug=' + (new Date().getTime()) : ''),
+                'href': file,
                 'rel': 'stylesheet',
                 'type': 'text/css'
             }));
@@ -595,7 +592,7 @@
             var file = files.shift();
             var tag = document.createElement('script');
             tag.type = 'text/javascript';
-            tag.src = file + (this.debug ? '?debug=' + (new Date().getTime()) : '');
+            tag.src = file;
             tag.onload = tag.onreadystatechange = function() {
                 if ( (tag.readyState && tag.readyState != "loaded" && tag.readyState != "complete") || tag.onload_done )
                     return;

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to