[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
This commit is contained in:
Xavier Morel
2012-01-11 15:31:44 +01:00
parent a03bd12a44
commit c1b26ed89d
2 changed files with 21 additions and 9 deletions
+3 -2
View File
@@ -1123,7 +1123,8 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
this.$element.children().remove();
},
do_reload: function() {
return this.session.session_init().pipe(_.bind(function() {this.menu.do_reload();}, this));
return this.session.session_reload().pipe(
$.proxy(this.menu, 'do_reload'));
},
do_notify: function() {
var n = this.notification;
@@ -1174,7 +1175,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
self.menu.on_menu_click(null, action.menu_id);
});
}
},
}
});
openerp.web.EmbeddedClient = openerp.web.Widget.extend({
+18 -7
View File
@@ -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() {