[FIX] login db loading cleanup

bzr revid: al@openerp.com-20120815164630-yzc5grk2df2bzloe
This commit is contained in:
Antony Lesuisse 2012-08-15 18:46:30 +02:00
parent d85a88bfd2
commit 7bef5d1924
1 changed files with 21 additions and 38 deletions

View File

@ -510,11 +510,11 @@ instance.web.client_actions.add("database_manager", "instance.web.DatabaseManage
instance.web.Login = instance.web.Widget.extend({ instance.web.Login = instance.web.Widget.extend({
template: "Login", template: "Login",
remember_credentials: true, remember_credentials: true,
_db_list: null,
init: function(parent, params) { init: function(parent, params) {
this._super(parent); this._super(parent);
this.has_local_storage = typeof(localStorage) != 'undefined'; this.has_local_storage = typeof(localStorage) != 'undefined';
this.db_list = null;
this.selected_db = null; this.selected_db = null;
this.selected_login = null; this.selected_login = null;
this.params = params || {}; this.params = params || {};
@ -537,50 +537,41 @@ instance.web.Login = instance.web.Widget.extend({
self.$element.find('.oe_login_manage_db').click(function() { self.$element.find('.oe_login_manage_db').click(function() {
self.do_action("database_manager"); self.do_action("database_manager");
}); });
return self.load_db_list().then(self.on_db_list_loaded).then(function() { var d;
if (self.params.db) { if (self.params.db) {
self.do_login(self.params.db, self.params.login, self.params.password); d = self.do_login(self.params.db, self.params.login, self.params.password);
} } else {
}); d = self.rpc("/web/database/get_list", {}).done(self.on_db_loaded).fail(self.on_db_failed);
},
load_db_list: function (force) {
var d = $.when(), self = this;
if (_.isNull(this._db_list) || force) {
d = self.rpc("/web/database/get_list", {}, function(result) {
self._db_list = _.clone(result.db_list);
}, function(error, event) {
if (error.data.fault_code === 'AccessDenied') {
event.preventDefault();
}
});
} }
return d; return d;
}, },
on_db_list_loaded: function () { on_db_loaded: function (result) {
var self = this; this.db_list = result.db_list;
var list = this._db_list; this.$("[name=db]").replaceWith(QWeb.render('Login.dblist', { db_list: this.db_list, selected_db: this.selected_db}));
var dbdiv = this.$element.find('div.oe_login_dbpane'); if(this.db_list.length === 0) {
this.$element.find("[name=db]").replaceWith(instance.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db}));
if(list.length === 0) {
this.do_action("database_manager"); this.do_action("database_manager");
} else if(list && list.length === 1) { } else if(this.db_list.length === 1) {
dbdiv.hide(); this.$('div.oe_login_dbpane').hide();
} else { } else {
dbdiv.show(); this.$('div.oe_login_dbpane').show();
}
},
on_db_failed: function (error, event) {
if (error.data.fault_code === 'AccessDenied') {
event.preventDefault();
} }
}, },
on_submit: function(ev) { on_submit: function(ev) {
if(ev) { if(ev) {
ev.preventDefault(); ev.preventDefault();
} }
var $e = this.$element; var db = this.$("form [name=db]").val();
var db = $e.find("form [name=db]").val();
if (!db) { if (!db) {
this.do_warn("Login", "No database selected !"); this.do_warn("Login", "No database selected !");
return false; return false;
} }
var login = $e.find("form input[name=login]").val(); var login = this.$("form input[name=login]").val();
var password = $e.find("form input[name=password]").val(); var password = this.$("form input[name=password]").val();
this.do_login(db, login, password); this.do_login(db, login, password);
}, },
@ -616,12 +607,6 @@ instance.web.Login = instance.web.Widget.extend({
}); });
}); });
}, },
show: function () {
this.$element.show();
},
hide: function () {
this.$element.hide();
}
}); });
instance.web.client_actions.add("login", "instance.web.Login"); instance.web.client_actions.add("login", "instance.web.Login");
@ -1084,8 +1069,6 @@ instance.web.WebClient = instance.web.Client.extend({
this.session.session_logout().then(function () { this.session.session_logout().then(function () {
$(window).unbind('hashchange', self.on_hashchange); $(window).unbind('hashchange', self.on_hashchange);
self.do_push_state({}); self.do_push_state({});
//would be cool to be able to do this, but I think it will make addons do strange things
//this.show_login();
window.location.reload(); window.location.reload();
}); });
}, },