[IMP] initial module loading improvements
authorAntony Lesuisse <al@openerp.com>
Tue, 27 Dec 2011 19:44:05 +0000 (20:44 +0100)
committerAntony Lesuisse <al@openerp.com>
Tue, 27 Dec 2011 19:44:05 +0000 (20:44 +0100)
bzr revid: al@openerp.com-20111227194405-rz3kxbib03orbpr8

addons/web/static/src/js/boot.js
addons/web/static/src/js/core.js

index c2aea24..282435f 100644 (file)
          * @param {Array} modules list of modules to initialize
          */
         init: function(modules) {
+            // By default only web will be loaded, the rest will be by loaded
+            // by openerp.web.Connection on the first session_authenticate
+            modules = modules || ["web"];
             var new_instance = {
                 // links to the global openerp
                 _openerp: openerp,
-                // Only web will be loaded, the rest will be by loaded by
-                // openerp.web.Connection on the first connection
-                _modules_loaded: false,
                 // this unique id will be replaced by hostname_databasename by
                 // openerp.web.Connection on the first connection
                 _session_id: "session" + session_counter++,
+                _modules: modules,
                 web: {},
                 web_mobile: {}
             };
             openerp.sessions[new_instance._session_id] = new_instance;
-            modules = modules || ["web"];
             for(var i=0; i < modules.length; i++) {
                 openerp[modules[i]](new_instance);
             }
index 646b718..1554127 100644 (file)
@@ -553,9 +553,10 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
                 user_context: result.context,
                 openerp_entreprise: result.openerp_entreprise
             });
-            var deferred = self.do_load_qweb(['/web/webclient/qweb']);
+            var modules = openerp._modules.join(',');
+            var deferred = self.rpc('/web/webclient/qweblist', {mods: modules}).pipe(self.do_load_qweb);
             if(self.session_is_valid()) {
-                return deferred.pipe(_.bind(function() { this.load_modules(); }, self));
+                return deferred.pipe(function() { self.load_modules(); });
             }
             return deferred;
         });
@@ -636,9 +637,6 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
      */
     load_modules: function() {
         var self = this;
-        if(openerp._modules_loaded) {
-            return $.when();
-        }
         return this.rpc('/web/session/modules', {}).pipe(function(result) {
             self.module_list = result;
             var lang = self.user_context.lang;