diff options
| author | Antony Lesuisse <al@openerp.com> | 2015-07-31 00:33:47 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2015-08-01 18:04:14 +0200 |
| commit | 3cba55d7a7e1f01150f87f806546e10526b10219 (patch) | |
| tree | 442923b0c39d5bed1ef4c111fbf69715954c7cb4 /addons/web/static/src | |
| parent | 4b330f3173eb0a3d82b743c73de6cf5c9ecd0178 (diff) | |
[IMP] web: web 1.0 database manager
Implement the database manager with plain HTML forms and HTTP controllers.
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/img/logo_inverse_white_206px.png | bin | 0 -> 8208 bytes | |||
| -rw-r--r-- | addons/web/static/src/js/widgets/database_manager.js | 215 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 277 |
3 files changed, 0 insertions, 492 deletions
diff --git a/addons/web/static/src/img/logo_inverse_white_206px.png b/addons/web/static/src/img/logo_inverse_white_206px.png Binary files differnew file mode 100644 index 00000000000..528d485f2fa --- /dev/null +++ b/addons/web/static/src/img/logo_inverse_white_206px.png diff --git a/addons/web/static/src/js/widgets/database_manager.js b/addons/web/static/src/js/widgets/database_manager.js deleted file mode 100644 index cbffa5117dc..00000000000 --- a/addons/web/static/src/js/widgets/database_manager.js +++ /dev/null @@ -1,215 +0,0 @@ -odoo.define('web.DatabaseManager', function (require) { -"use strict"; - -var core = require('web.core'); -var Dialog = require('web.Dialog'); -var framework = require('web.framework'); -var Widget = require('web.Widget'); - -var _t = core._t; -var QWeb = core.qweb; - -var DataBaseManager = Widget.extend({ - init: function(parent) { - this._super(parent); - $.validator.addMethod('matches', function (s, _, re) { - return new RegExp(re).test(s); - }, _t("Invalid database name")); - }, - start: function() { - var self = this; - $('.oe_secondary_menus_container,.oe_user_menu_placeholder').empty(); - var fetch_db = this.rpc("/web/database/get_list", {}).then( - function(result) { - self.db_list = result; - }, - function (_, ev) { - ev.preventDefault(); - self.db_list = null; - }); - var fetch_langs = this.rpc("/web/session/get_lang_list", {}).done(function(result) { - self.lang_list = result; - }); - return $.when(fetch_db, fetch_langs).always(self.do_render); - }, - do_render: function() { - var self = this; - core.bus.trigger('web_client_toggle_bars', true); - self.$el.html(QWeb.render("DatabaseManager", { widget : self })); - $('.oe_user_menu_placeholder').append(QWeb.render("DatabaseManager.user_menu",{ widget : self })); - $('.oe_secondary_menus_container').append(QWeb.render("DatabaseManager.menu",{ widget : self })); - $('ul.oe_secondary_submenu > li:first').addClass('active'); - $('ul.oe_secondary_submenu > li').bind('click', function (event) { - var menuitem = $(this); - menuitem.addClass('active').siblings().removeClass('active'); - var form_id =menuitem.find('a').attr('href'); - $(form_id).show().siblings().hide(); - event.preventDefault(); - }); - $('#back-to-login').click(self.do_exit); - self.$el.find("td").addClass("oe_form_group_cell"); - 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 }); - self.$el.find("form[name=change_pwd_form]").validate({ - messages: { - old_pwd: _t("Please enter your previous password"), - new_pwd: _t("Please enter your new password"), - confirm_pwd: { - required: _t("Please confirm your new password"), - equalTo: _t("The confirmation does not match the password") - } - }, - submitHandler: self.do_change_password - }); - }, - destroy: function () { - this.$el.find('#db-create, #db-drop, #db-backup, #db-restore, #db-change-password, #back-to-login').unbind('click').end().empty(); - this._super(); - }, - /** - * Blocks UI and replaces $.unblockUI by a noop to prevent third parties - * from unblocking the UI - */ - blockUI: function () { - framework.blockUI(); - $.unblockUI = function () {}; - }, - /** - * Reinstates $.unblockUI so third parties can play with blockUI, and - * unblocks the UI - */ - unblockUI: function () { - $.unblockUI = framework.unblockUI; - framework.unblockUI(); - }, - /** - * Displays an error dialog resulting from the various RPC communications - * failing over themselves - * - * @param {Object} error error description - * @param {String} error.title title of the error dialog - * @param {String} error.error message of the error dialog - */ - display_error: function (error) { - return new Dialog(this, { - size: 'medium', - title: error.title, - $content: $('<div>').html(error.error) - }).open(); - }, - do_create: function(form) { - var fields = $(form).serializeArray(); - this.rpc("/web/database/create", {'fields': fields}).done(function(result) { - if (result) { - framework.redirect('/web'); - } else { - alert("Failed to create database"); - } - }); - }, - 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(_t("Duplicating database"), _t("The database has been duplicated.")); - self.start(); - }); - }, - do_drop: function(form) { - var self = this; - var $form = $(form), - fields = $form.serializeArray(), - $db_list = $form.find('[name=drop_db]'), - db = $db_list.val(); - if (!db || !confirm(_.str.sprintf(_t("Do you really want to delete the database: %s ?"), db))) { - return; - } - self.rpc("/web/database/drop", {'fields': fields}).done(function(result) { - if (result.error) { - self.display_error(result); - return; - } - self.do_notify(_t("Dropping database"), _.str.sprintf(_t("The database %s has been dropped"), db)); - self.start(); - }); - }, - do_backup: function(form) { - var self = this; - self.blockUI(); - self.session.get_file({ - form: form, - success: function () { - self.do_notify(_t("Backed"), _t("Database backed up successfully")); - }, - error: function(error){ - if (error && error[1]) { - self.display_error(error[1][0]); - } - }, - complete: function() { - self.unblockUI(); - } - }); - }, - do_restore: function(form) { - var self = this; - self.blockUI(); - $(form).ajaxSubmit({ - url: '/web/database/restore', - type: 'POST', - resetForm: true, - success: function (body) { - // If empty body, everything went fine - if (!body) { return; } - - if (body.indexOf('403 Forbidden') !== -1) { - self.display_error({ - title: _t("Access Denied"), - error: _t("Incorrect super-administrator password") - }); - } else { - self.display_error({ - title: _t("Restore Database"), - error: _t("Could not restore the database") - }); - } - }, - complete: function() { - self.unblockUI(); - self.do_notify(_t("Restored"), _t("Database restored successfully")); - } - }); - }, - do_change_password: function(form) { - var self = this; - self.rpc("/web/database/change_password", { - 'fields': $(form).serializeArray() - }).done(function(result) { - if (result.error) { - self.display_error(result); - return; - } - self.unblockUI(); - self.do_notify(_t("Changed Password"), _t("Password has been changed successfully")); - }); - }, - do_exit: function () { - this.$el.remove(); - framework.redirect('/web'); - } -}); - -core.action_registry.add("database_manager", DataBaseManager); - -return DataBaseManager; - -}); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 4bd7970c152..42d2f0ae34e 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -54,283 +54,6 @@ </div> </t> -<t t-name="DatabaseManager"> - <div class="oe_view_manager_view_form"> - <div class="oe_form"> - <form id="db_create" name="create_db_form" style="display: block;"> - <div class="oe_view_manager oe_view_manager_current"> - <div class="oe-control-panel" style="padding: 8px;"> - <div class="oe_header_row"> - <h2 class="oe_view_title"> - <span class="oe_view_title_text oe_breadcrumb_title">Create a New Database</span> - </h2> - </div> - </div> - </div> - <p class="oe_grey" style="margin: 10px"> - Fill in this form to create an Odoo database. You can - create databases for different companies or for different - goals (testing, production). Once the database is created, - you will be able to install your first application. - </p> - <p class="oe_grey" style="margin: 10px"> - By default, the master password is 'admin'. This password - is required to create, delete, dump or restore databases. - </p> - <table class="db_option_table" style="margin: 10px"> - <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_name">Select a database name:</label></td> - <td> - <input type="text" name="db_name" class="required" matches="^[a-zA-Z0-9][a-zA-Z0-9_-]+$" autofocus="true" placeholder="e.g. mycompany"/> - </td> - </tr> - <tr> - <td><label for="demo_data">Load demonstration data:</label></td> - <td class="oe_form_group_cell"> - <span class="oe_form_field oe_form_field_boolean oe_grey" > - <input type="checkbox" name="demo_data" /> - Check this box to evaluate Odoo. - </span> - </td> - </tr> - <tr> - <td><label for="db_lang">Default language:</label></td> - <td class="oe_form_field oe_form_field_selection"> - <select name="db_lang" t-if="widget.lang_list" class="oe_inline"> - <t t-foreach="widget.lang_list" t-as="lang"> - <option t-att-value="lang[0]" t-att-selected="lang[0] === 'en_US' ? 'selected' : undefined"> - <t t-esc="lang[1]" /> - </option> - </t> - </select> - </td> - </tr> - <tr> - <td><label for="create_admin_pwd">Choose a password:</label></td> - <td><input type="password" name="create_admin_pwd" class="required" /></td> - </tr> - <tr> - <td><label for="create_confirm_pwd">Confirm password:</label></td> - <td><input type="password" name="create_confirm_pwd" class="required" equalTo="input[name=create_admin_pwd]"/></td> - </tr> - <tr> - <td></td> - <td><button type="submit" class="oe_button oe_highlight db_create">Create Database</button></td> - </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-control-panel" 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-control-panel" style="padding: 8px;"> - <div class="oe_header_row"> - <h2 class="oe_view_title"> - <span class="oe_view_title_text oe_breadcrumb_title">Drop Database</span> - </h2> - <button type="submit" class="oe_button oe_highlight db_drop">Drop</button> - </div> - </div> - </div> - <table align="center" class="db_option_table"> - <tr> - <td><label for="drop_db">Database:</label></td> - <td class="oe_form_field oe_form_field_selection"> - <select t-if="widget.db_list" name="drop_db" autofocus="autofocus"> - <t t-foreach="widget.db_list" t-as="db"> - <option t-att-value="db"> - <t t-esc="db" /> - </option> - </t> - </select> - <input t-if="!widget.db_list" name="drop_db" class="required" type="text" autofocus="autofocus"/> - </td> - </tr> - <tr> - <td><label for="drop_password">Master Password:</label></td> - <td><input type="password" name="drop_pwd" class="required" /></td> - </tr> - </table> - </form> - <form id="db_backup" name="backup_db_form" target="backup-target" action="/web/database/backup" style="display: none;"> - <div class="oe_view_manager oe_view_manager_current"> - <div class="oe-control-panel" style="padding: 8px;"> - <div class="oe_header_row"> - <h2 class="oe_view_title"> - <span class="oe_view_title_text oe_breadcrumb_title">Backup Database</span> - </h2> - <button type="submit" class="oe_button oe_highlight db_backup">Backup</button> - </div> - </div> - </div> - <input type="hidden" name="token" /> - <table align="center" class="db_option_table"> - <tr> - <td><label for="backup_db">Database:</label></td> - <td class="oe_form_field oe_form_field_selection "> - <select t-if="widget.db_list" name="backup_db" autofocus="autofocus"> - <t t-foreach="widget.db_list" t-as="db"> - <option t-att-value="db"> - <t t-esc="db" /> - </option> - </t> - </select> - <input t-if="!widget.db_list" name="backup_db" class="required" type="text" autofocus="autofocus"/> - </td> - </tr> - <tr> - <td><label for="backup_format">Backup format:</label></td> - <td class="oe_form_field oe_form_field_selection"> - <select name="backup_format"> - <option value="zip">zip (includes filestore)</option> - <option value="dump">pg_dump custom format (without filestore)</option> - </select> - </td> - </tr> - <tr> - <td><input type="password" name="backup_pwd" class="required" /></td> - </tr> - </table> - </form> - <form id="db_restore" name="restore_db_form" style="display: none; "> - <div class="oe_view_manager oe_view_manager_current"> - <div class="oe-control-panel" style="padding: 8px;"> - <div class="oe_header_row"> - <h2 class="oe_view_title"> - <span class="oe_view_title_text oe_breadcrumb_title">Restore Database</span> - </h2> - <button type="submit" class="oe_button oe_highlight db_restore">Restore</button> - </div> - </div> - </div> - <table align="center" class="db_option_table"> - <tr> - <td><label for="restore_pwd">Master Password:</label></td> - <td><input type="password" name="restore_pwd" class="required" autofocus="autofocus"/></td> - </tr> - <tr> - <td><label for="restore_db">File:</label></td> - <td><input type="file" name="db_file" class="required"/></td> - </tr> - <tr> - <td><label for="new_db">New database name:</label></td> - <td><input type="text" name="new_db" class="required"/></td> - </tr> - <tr> - <td><label for="mode">Mode:</label></td> - <td><select name="mode" class="required"> - <option value="restore">Backup Restore</option> - <option value="copy">Copy of an existing database</option> - </select></td> - </tr> - </table> - </form> - <form id="db_change_password" name="change_pwd_form" style="display: none;"> - <div class="oe_view_manager oe_view_manager_current"> - <div class="oe-control-panel" style="padding: 8px;"> - <div class="oe_header_row"> - <h2 class="oe_view_title"> - <span class="oe_view_title_text oe_breadcrumb_title">Change Master Password</span> - </h2> - <button type="submit" class="oe_button oe_highlight db-change-password">Change Password</button> - </div> - </div> - </div> - <table align="center" class="db_option_table"> - <tr> - <td><label for="old_pwd">Master password:</label></td> - <td><input type="password" name="old_pwd" class="required" minlength="1" autofocus="autofocus"/></td> - </tr> - <tr> - <td><label for="new_pwd">New master password:</label></td> - <td><input type="password" name="new_pwd" class="required" minlength="1"/></td> - </tr> - <tr> - <td><label for="confirm_pwd">Confirm new master password:</label></td> - <td><input type="password" name="confirm_pwd" class="required" equalTo="input[name=new_pwd]" minlength="1"/> </td> - </tr> - </table> - </form> - </div> - </div> -</t> -<t t-name="DatabaseManager.user_menu"> - <li> - <a id="back-to-login" href="#">Back to Login</a> - </li> -</t> -<t t-name="DatabaseManager.menu"> - <div class="oe_secondary_menu_section">Database Management</div> - <ul class="oe_secondary_submenu nav nav-pills nav-stacked"> - <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> - <li><a href="#db_change_password">Password</a></li> - </ul> -</t> - -<t t-name="ChangePassword"> - <form name="change_password_form" method="POST"> - <div class="oe_form"> - <table align="center"> - <tr> - <td class="oe_form_group_cell oe_form_group_cell_label"><label for="old_pwd" class="oe_form_label">Old Password:</label></td> - <td class="oe_form_group_cell"><input type="password" name="old_pwd" - minlength="1" autofocus="autofocus"/></td> - </tr> - <tr> - <td class="oe_form_group_cell oe_form_group_cell_label"><label for="new_password" class="oe_form_label">New Password:</label></td> - <td class="oe_form_group_cell"><input type="password" name="new_password" - minlength="1"/></td> - </tr> - <tr> - <td class="oe_form_group_cell oe_form_group_cell_label"><label for="confirm_pwd" class="oe_form_label">Confirm New Password:</label></td> - <td class="oe_form_group_cell"><input type="password" name="confirm_pwd" - minlength="1"/></td> - </tr> - <tr> - <td colspan="2" align="right"> - <button class='oe_button oe_form_button'>Change Password</button> - <button type="button" class="oe_button oe_form_button_cancel oe_form_button oe_link" href="javascript:void(0)"><span>Cancel</span></button> - </td> - </tr> - </table> - </div> - </form> -</t> - <t t-name="Menu.needaction_counter"> <div id="menu_counter" class="badge pull-right"> <t t-if="widget.needaction_counter > 99"> 99+ </t> |
