[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:
@@ -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({
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user