diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index ffabe97661b..407b87b6ab1 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -768,15 +768,20 @@ class Database(openerpweb.Controller): @openerpweb.jsonrequest def create(self, req, fields): params = dict(map(operator.itemgetter('name', 'value'), fields)) - create_attrs = ( + return req.session.proxy("db").create_database( params['super_admin_pwd'], params['db_name'], bool(params.get('demo_data')), params['db_lang'], - params['create_admin_pwd'] - ) + params['create_admin_pwd']) - return req.session.proxy("db").create_database(*create_attrs) + @openerpweb.jsonrequest + def duplicate(self, req, fields): + params = dict(map(operator.itemgetter('name', 'value'), fields)) + return req.session.proxy("db").duplicate_database( + params['super_admin_pwd'], + params['db_original_name'], + params['db_name']) @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 51e12a3a9dc..e0bd18ad05f 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -333,6 +333,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ self.$el.find("tr td:first-child").addClass("oe_form_group_cell_label"); self.$el.find("label").addClass("oe_form_label"); self.$el.find("form[name=create_db_form]").validate({ submitHandler: self.do_create }); + self.$el.find("form[name=duplicate_db_form]").validate({ submitHandler: self.do_duplicate }); self.$el.find("form[name=drop_db_form]").validate({ submitHandler: self.do_drop }); self.$el.find("form[name=backup_db_form]").validate({ submitHandler: self.do_backup }); self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore }); @@ -418,6 +419,18 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ self.do_action(client_action); }); }, + do_duplicate: function(form) { + var self = this; + var fields = $(form).serializeArray(); + self.rpc("/web/database/duplicate", {'fields': fields}).then(function(result) { + if (result.error) { + self.display_error(result); + return; + } + self.do_notify("Duplicating database", "The database has been duplicated."); + self.start(); + }); + }, do_drop: function(form) { var self = this; var $form = $(form), diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ca116b27e60..1b7a5cea53a 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -152,6 +152,32 @@ +