diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 33c51bc2f93..a41663ceec2 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -357,13 +357,8 @@ class Database(openerpweb.Controller): dbs = [i for i in dbs if re.match(r, i)] return {"db_list": dbs} - @openerpweb.jsonrequest - def progress(self, req, password, id): - return req.session.proxy('db').get_progress(password, id) - @openerpweb.jsonrequest def create(self, req, fields): - params = dict(map(operator.itemgetter('name', 'value'), fields)) create_attrs = ( params['super_admin_pwd'], @@ -373,17 +368,7 @@ class Database(openerpweb.Controller): params['create_admin_pwd'] ) - try: - return req.session.proxy("db").create(*create_attrs) - except xmlrpclib.Fault, e: - if e.faultCode and isinstance(e.faultCode, str)\ - and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': e.faultCode, 'title': 'Database creation error'} - return { - 'error': "Could not create database '%s': %s" % ( - params['db_name'], e.faultString), - 'title': 'Database creation error' - } + return req.session.proxy("db").create_database(*create_attrs) @openerpweb.jsonrequest def drop(self, req, fields): diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 132cc3b5851..8217d0184d1 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -344,44 +344,6 @@ openerp.web.Database = openerp.web.OldWidget.extend(/** @lends openerp.web.Datab }); return result; }, - /** - * Waits until the new database is done creating, then unblocks the UI and - * logs the user in as admin - * - * @param {Number} db_creation_id identifier for the db-creation operation, used to fetch the current installation progress - * @param {Object} info info fields for this database creation - * @param {String} info.db name of the database being created - * @param {String} info.password super-admin password for the database - */ - wait_for_newdb: function (db_creation_id, info) { - var self = this; - self.rpc('/web/database/progress', { - id: db_creation_id, - password: info.password - }, function (result) { - var progress = result[0]; - // I'd display a progress bar, but turns out the progress status - // the server report kind-of blows goats: it's at 0 for ~75% of - // the installation, then jumps to 75%, then jumps down to either - // 0 or ~40%, then back up to 75%, then terminates. Let's keep that - // mess hidden behind a not-very-useful but not overly weird - // message instead. - if (progress < 1) { - setTimeout(function () { - self.wait_for_newdb(db_creation_id, info); - }, 500); - return; - } - - var admin = result[1][0]; - setTimeout(function () { - self.widget_parent.do_login( - info.db, admin.login, admin.password); - self.stop(); - self.unblockUI(); - }); - }); - }, /** * Blocks UI and replaces $.unblockUI by a noop to prevent third parties * from unblocking the UI @@ -421,23 +383,19 @@ openerp.web.Database = openerp.web.OldWidget.extend(/** @lends openerp.web.Datab self.$option_id.find("form[name=create_db_form]").validate({ submitHandler: function (form) { var fields = $(form).serializeArray(); - self.blockUI(); self.rpc("/web/database/create", {'fields': fields}, function(result) { - if (result.error) { - self.unblockUI(); - self.display_error(result); - return; - } if (self.db_list) { self.db_list.push(self.to_object(fields)['db_name']); self.db_list.sort(); self.widget_parent.set_db_list(self.db_list); } + var form_obj = self.to_object(fields); - self.wait_for_newdb(result, { - password: form_obj['super_admin_pwd'], - db: form_obj['db_name'] - }); + self.widget_parent.do_login( + form_obj['db_name'], + 'admin', + form_obj['create_admin_pwd']); + self.stop(); }); } });