summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core.js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-01-11 15:31:44 +0100
committerXavier Morel <xmo@openerp.com>2012-01-11 15:31:44 +0100
commitc1b26ed89db9cb04d78f6af3e8720ff23714a5fc (patch)
treeadb37a5da89db1936448821186f73f08d087aae5 /addons/web/static/src/js/core.js
parenta03bd12a44016dcdf917d6f55f231ca3d624b207 (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.js25
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() {