diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-01-11 15:31:44 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-01-11 15:31:44 +0100 |
| commit | c1b26ed89db9cb04d78f6af3e8720ff23714a5fc (patch) | |
| tree | adb37a5da89db1936448821186f73f08d087aae5 /addons/web/static/src/js/core.js | |
| parent | a03bd12a44016dcdf917d6f55f231ca3d624b207 (diff) | |
[FIX] WebClient.do_reload's deferred chain, split session reloading and session init
that way we don't try to reload all addons every time, not sure it's the best idea though, we'll see
bzr revid: xmo@openerp.com-20120111143144-akq23gtyuxfdq6z9
Diffstat (limited to 'addons/web/static/src/js/core.js')
| -rw-r--r-- | addons/web/static/src/js/core.js | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 819385288a7..a194c34f287 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -547,7 +547,24 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. var self = this; // TODO: session store in cookie should be optional this.session_id = this.get_cookie('session_id'); - return this.rpc("/web/session/get_session_info", {}).pipe(function(result) { + return this.session_reload().pipe(function(result) { + 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(function() { return self.load_modules(); }); + } + return deferred; + }); + }, + /** + * (re)loads the content of a session: db name, username, user id, session + * context and status of the support contract + * + * @returns {$.Deferred} deferred indicating the session is done reloading + */ + session_reload: function () { + var self = this; + return this.rpc("/web/session/get_session_info", {}).then(function(result) { // If immediately follows a login (triggered by trying to restore // an invalid session or no session at all), refresh session data // (should not change, but just in case...) @@ -558,12 +575,6 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. user_context: result.context, openerp_entreprise: result.openerp_entreprise }); - 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(function() { self.load_modules(); }); - } - return deferred; }); }, session_is_valid: function() { |
