diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 82f23d82a43..4e4c5b47d39 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -73,23 +73,21 @@ class Database(openerpweb.Controller): return {"db_list": dbs} @openerpweb.jsonrequest - def db_operation(self, req, flag, **kw): + def create_db(self, req, **kw): - if flag == 'create': - - super_admin_pwd = kw.get('super_admin_pwd') - dbname = kw.get('db') - demo_data = kw.get('demo_data') - db_lang = kw.get('db_lang') - admin_pwd = kw.get('admin_pwd') - confirm_pwd = kw.get('confirm_pwd') - - if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', dbname): - return {'error': "You must avoid all accents, space or special characters.", 'title': 'Bad database name'} - - ok = False - try: - return req.session.proxy("db").create(super_admin_pwd, dbname, demo_data, db_lang, admin_pwd) + super_admin_pwd = kw.get('super_admin_pwd') + dbname = kw.get('db') + demo_data = kw.get('demo_data') + db_lang = kw.get('db_lang') + admin_pwd = kw.get('admin_pwd') + confirm_pwd = kw.get('confirm_pwd') + + if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', dbname): + return {'error': "You must avoid all accents, space or special characters.", 'title': 'Bad database name'} + + ok = False + try: + return req.session.proxy("db").create(super_admin_pwd, dbname, demo_data, db_lang, admin_pwd) # while True: # try: # progress, users = req.session.proxy('db').get_progress(super_admin_pwd, res) @@ -106,65 +104,69 @@ class Database(openerpweb.Controller): # except DatabaseCreationCrash: # return {'error': "The server crashed during installation.\nWe suggest you to drop this database.", # 'title': 'Error during database creation'} - except Exception, e: - if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': 'Bad super admin password !', 'title': 'Create Database'} - else: - return {'error': 'Could not create database !', 'title': 'Create Database'} + except Exception, e: + if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': + return {'error': 'Bad super admin password !', 'title': 'Create Database'} + else: + return {'error': 'Could not create database !', 'title': 'Create Database'} + + @openerpweb.jsonrequest + def drop_db(self, req, **kw): + db = kw.get('db') + password = kw.get('password') - elif flag == 'drop': - db = kw.get('db') - password = kw.get('password') + try: + return req.session.proxy("db").drop(password, db) + except Exception, e: + if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': + return {'error': 'Bad super admin password !', 'title': 'Drop Database'} + else: + return {'error': 'Could not drop database !', 'title': 'Drop Database'} + + @openerpweb.jsonrequest + def backup_db(self, req, **kw): + db = kw.get('db') + password = kw.get('password') + try: + res = req.session.proxy("db").dump(password, db) + if res: + cherrypy.response.headers['Content-Type'] = "application/data" + cherrypy.response.headers['Content-Disposition'] = 'filename="' + db + '.dump"' + return base64.decodestring(res) + except Exception, e: + if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': + return {'error': 'Bad super admin password !', 'title': 'Backup Database'} + else: + return {'error': 'Could not drop database !', 'title': 'Backup Database'} - try: - return req.session.proxy("db").drop(password, db) - except Exception, e: - if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': 'Bad super admin password !', 'title': 'Drop Database'} - else: - return {'error': 'Could not drop database !', 'title': 'Drop Database'} + @openerpweb.jsonrequest + def restore_db(self, req, **kw): + filename = kw.get('filename') + db = kw.get('db') + password = kw.get('password') - elif flag == 'backup': - db = kw.get('db') - password = kw.get('password') - try: - res = req.session.proxy("db").dump(password, db) - if res: - cherrypy.response.headers['Content-Type'] = "application/data" - cherrypy.response.headers['Content-Disposition'] = 'filename="' + db + '.dump"' - return base64.decodestring(res) - except Exception, e: - if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': 'Bad super admin password !', 'title': 'Backup Database'} - else: - return {'error': 'Could not drop database !', 'title': 'Backup Database'} - - elif flag == 'restore': - filename = kw.get('filename') - db = kw.get('db') - password = kw.get('password') - - try: - data = base64.encodestring(filename.file.read()) - return req.session.proxy("db").restore(password, db, data) - except Exception, e: - if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': 'Bad super admin password !', 'title': 'Restore Database'} - else: - return {'error': 'Could not restore database !', 'title': 'Restore Database'} + try: + data = base64.encodestring(filename.file.read()) + return req.session.proxy("db").restore(password, db, data) + except Exception, e: + if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': + return {'error': 'Bad super admin password !', 'title': 'Restore Database'} + else: + return {'error': 'Could not restore database !', 'title': 'Restore Database'} - elif flag == 'change_password': - old_password = kw.get('old_password') - new_password = kw.get('new_password') - confirm_password = kw.get('confirm_password') - - try: - return req.session.proxy("db").change_admin_password(old_password, new_password) - except Exception, e: - if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': - return {'error': 'Bad super admin password !', 'title': 'Change Password'} - else: - return {'error': 'Error, password not changed !', 'title': 'Change Password'} + @openerpweb.jsonrequest + def change_password_db(self, req, **kw): + old_password = kw.get('old_password') + new_password = kw.get('new_password') + confirm_password = kw.get('confirm_password') + + try: + return req.session.proxy("db").change_admin_password(old_password, new_password) + except Exception, e: + if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': + return {'error': 'Bad super admin password !', 'title': 'Change Password'} + else: + return {'error': 'Error, password not changed !', 'title': 'Change Password'} class Session(openerpweb.Controller): _cp_path = "/base/session" diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 8c03dbb55e6..f9dffcfc66a 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -688,19 +688,18 @@ openerp.base.Loading = openerp.base.Controller.extend({ }); openerp.base.Database = openerp.base.Controller.extend({ - init: function(parent, element_id, option_id) { - this._super(parent, element_id); - this.option_id = option_id; - this.$option_id = $('#' + option_id); - this.$option_id.html(''); - if(this.parent && this.parent.session) { + init: function(parent, element_id, option_id) { + this._super(parent, element_id); + this.option_id = option_id; + this.$option_id = $('#' + option_id); + this.$option_id.html(''); + if(this.parent && this.parent.session) { this.session = this.parent.session; } - }, - start: function() { - this.$element.html(QWeb.render("Database", this)); - - this.$element.closest(".openerp").removeClass("login-mode"); + }, + start: function() { + this.$element.html(QWeb.render("Database", this)); + this.$element.closest(".openerp").removeClass("login-mode"); this.$element.closest(".openerp").addClass("database_block"); var self = this; @@ -710,8 +709,8 @@ openerp.base.Database = openerp.base.Controller.extend({ }); this.rpc("/base/session/get_lang_list", {}, function(result) { - self.lang_list = result.lang_list; - self.do_db_create(); + self.lang_list = result.lang_list; + self.do_db_create(); }); this.$element.find('#db-create').click(this.do_db_create); @@ -720,228 +719,227 @@ openerp.base.Database = openerp.base.Controller.extend({ this.$element.find('#db-restore').click(this.do_db_restore); this.$element.find('#db-change-password').click(this.do_change_password); this.$element.find('#back-to-login').click(function() { - self.header = new openerp.base.Header(self, "oe_header"); - self.header.on_logout(); - }); - }, - - do_db_create: function() { - var self = this; + self.header = new openerp.base.Header(self, "oe_header"); + self.header.on_logout(); + }); + }, + + do_db_create: function() { + var self = this; self.db_string = "CREATE DATABASE"; self.$option_id.html(QWeb.render("CreateDB", self)); $("form[name=create_db_form]").validate(); $("input[name=create_confirm_pwd]").rules("add", { - equalTo: 'input[name=create_admin_pwd]', - messages: { - required: "Password did not match !" - } - }); - + equalTo: 'input[name=create_admin_pwd]', + messages: { + required: "Password did not match !" + } + }); + $("input[name=super_admin_pwd]").focus(); self.$option_id.find('form[name=create_db_form]').submit(function(ev) { - ev.preventDefault(); - - var super_admin_pwd = self.$option_id.find("input[name=super_admin_pwd]").val(); - var db = self.$option_id.find("input[name=db_name]").val(); - var demo_data = self.$option_id.find("input[name=demo_data]:checked"); - var db_lang = self.$option_id.find("select[name=db_lang]").val(); - var admin_pwd = self.$option_id.find("input[name=create_admin_pwd]").val(); - var confirm_pwd = self.$option_id.find("input[name=create_confirm_pwd]").val(); + ev.preventDefault(); + + var super_admin_pwd = self.$option_id.find("input[name=super_admin_pwd]").val(); + var db = self.$option_id.find("input[name=db_name]").val(); + var demo_data = self.$option_id.find("input[name=demo_data]:checked"); + var db_lang = self.$option_id.find("select[name=db_lang]").val(); + var admin_pwd = self.$option_id.find("input[name=create_admin_pwd]").val(); + var confirm_pwd = self.$option_id.find("input[name=create_confirm_pwd]").val(); - if (demo_data.length) - demo_data = 'True'; - else - demo_data = 'False'; - - self.rpc("/base/database/db_operation", { - 'flag': 'create', - 'super_admin_pwd': super_admin_pwd, - 'db': db, - 'demo_data': demo_data, - 'db_lang': db_lang, - 'admin_pwd': admin_pwd, - 'confirm_pwd': confirm_pwd - }, - function(result) { - if (result && !result.error) { - - } else if(result.error) { - var db_error_dialog = _.uniqueId("db_error_dialog"); - $('