diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index b085b5baab8..1a15d4ea933 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -133,9 +133,11 @@ class Session(openerpweb.Controller): elif flag == 'backup': db = kw.get('db') password = kw.get('password') - # todo: content type + 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) elif flag == 'restore': diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 4316d6f6fa6..fb7b7ace862 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -943,14 +943,16 @@ openerp.base.Database = openerp.base.Controller.extend({ $("form[name=drop_db_form]").validate(); - self.$option_id.find('#drop_db_btn').click(function() { + self.$option_id.find('form[name=drop_db_form]').submit(function(ev) { + ev.preventDefault(); + var db = self.$option_id.find("select[name=drop_db]").val(); var password = self.$option_id.find("input[name=drop_pwd]").val(); if (confirm("Do you really want to delete the database: " + db + " ?")) { self.rpc("/base/session/db_operation", {'flag': 'drop', 'db': db, 'password': password}, function(result) { - if (!result.error) { + if (result && !result.error) { self.$option_id.find("select[name=drop_db] :selected").remove(); self.notification.notify("Dropping database", "The database '" + db + "' has been dropped"); } @@ -965,13 +967,15 @@ openerp.base.Database = openerp.base.Controller.extend({ $("form[name=backup_db_form]").validate(); - self.$option_id.find('#backup_db_btn').click(function() { + self.$option_id.find('form[name=backup_db_form]').submit(function(ev) { + ev.preventDefault(); + var db = self.$option_id.find("select[name=backup_db]").val(); var password = self.$option_id.find("input[name=backup_pwd]").val(); - + self.rpc("/base/session/db_operation", {'flag': 'backup', 'db': db, 'password': password}, function(result) { - if (!result.error) { + if (result && !result.error) { self.notification.notify("Backup has been created for the database: '" + db + "'"); } }); @@ -984,14 +988,16 @@ openerp.base.Database = openerp.base.Controller.extend({ $("form[name=restore_db_form]").validate(); - self.$option_id.find('#restore_db_btn').click(function() { + self.$option_id.find('form[name=restore_db_form]').submit(function(ev) { + ev.preventDefault(); + var db = self.$option_id.find("input[name=restore_db]").val(); var password = self.$option_id.find("input[name=restore_pwd]").val(); var new_db = self.$option_id.find("input[name=new_db]").val(); self.rpc("/base/session/db_operation", {'flag': 'restore', 'db': db, 'password': password, 'new_db': new_db}, function(result) { - if (!result.error) { + if (result && !result.error) { self.notification.notify("You restored your database as: '" + new_db + "'"); } });