[IMP] database management: added `duplicate` operation.
authorVo Minh Thu <vmt@openerp.com>
Fri, 19 Oct 2012 10:12:59 +0000 (12:12 +0200)
committerVo Minh Thu <vmt@openerp.com>
Fri, 19 Oct 2012 10:12:59 +0000 (12:12 +0200)
bzr revid: vmt@openerp.com-20121019101259-f32m2wlf6xugk2vi

addons/web/controllers/main.py
addons/web/static/src/js/chrome.js
addons/web/static/src/xml/base.xml

index 72ffd95..3980fc3 100644 (file)
@@ -817,6 +817,17 @@ class Database(openerpweb.Controller):
         return req.session.proxy("db").create_database(*create_attrs)
 
     @openerpweb.jsonrequest
+    def duplicate(self, req, fields):
+        params = dict(map(operator.itemgetter('name', 'value'), fields))
+        duplicate_attrs = (
+            params['super_admin_pwd'],
+            params['db_original_name'],
+            params['db_name'],
+        )
+
+        return req.session.proxy("db").duplicate_database(*duplicate_attrs)
+
+    @openerpweb.jsonrequest
     def drop(self, req, fields):
         password, db = operator.itemgetter(
             'drop_pwd', 'drop_db')(
index a298ac6..cbff398 100644 (file)
@@ -326,6 +326,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 });
@@ -411,6 +412,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),
index b031ee1..f57e5e4 100644 (file)
                     </tr>
                 </table>
             </form>
+            <form id="db_duplicate" name="duplicate_db_form" style="display: none;">
+                <div class="oe_view_manager oe_view_manager_current">
+                    <div class="oe_view_manager_header" style="padding: 8px;">
+                        <div class="oe_header_row">
+                            <h2 class="oe_view_title">
+                                <span class="oe_view_title_text oe_breadcrumb_title">Duplicate Database</span>
+                            </h2>
+                            <button type="submit" class="oe_button oe_highlight db_duplicate">Duplicate</button>
+                        </div>
+                    </div>
+                </div>
+                <table align="center" class="db_option_table">
+                    <tr>
+                        <td><label for="super_admin_pwd">Master password:</label></td>
+                        <td><input type="password" name="super_admin_pwd" class="required" value="admin" /></td>
+                    </tr>
+                    <tr>
+                        <td><label for="db_original_name">Original database name:</label></td>
+                        <td><input type="text" name="db_original_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_-]+$" autofocus="true"/></td>
+                    </tr>
+                    <tr>
+                        <td><label for="db_name">New database name:</label></td>
+                        <td><input type="text" name="db_name" class="required" matches="^[a-zA-Z][a-zA-Z0-9_-]+$" /></td>
+                    </tr>
+                </table>
+            </form>
             <form id="db_drop" name="drop_db_form" style="display: none; ">
                 <div class="oe_view_manager oe_view_manager_current">
                     <div class="oe_view_manager_header" style="padding: 8px;">
     <div class="oe_secondary_menu_section">Database Management</div>
     <ul class="oe_secondary_submenu">
         <li><a href="#db_create">Create</a></li>
+        <li><a href="#db_duplicate">Duplicate</a></li>
         <li><a href="#db_drop">Drop</a></li>
         <li><a href="#db_backup">Backup</a></li>
         <li><a href="#db_restore">Restore</a></li>