summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2015-07-31 00:33:47 +0200
committerAntony Lesuisse <al@openerp.com>2015-08-01 18:04:14 +0200
commit3cba55d7a7e1f01150f87f806546e10526b10219 (patch)
tree442923b0c39d5bed1ef4c111fbf69715954c7cb4 /addons/web/static
parent4b330f3173eb0a3d82b743c73de6cf5c9ecd0178 (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')
-rw-r--r--addons/web/static/src/img/logo_inverse_white_206px.pngbin0 -> 8208 bytes
-rw-r--r--addons/web/static/src/js/widgets/database_manager.js215
-rw-r--r--addons/web/static/src/xml/base.xml277
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
new file mode 100644
index 00000000000..528d485f2fa
--- /dev/null
+++ b/addons/web/static/src/img/logo_inverse_white_206px.png
Binary files differ
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 &gt; 99"> 99+ </t>