diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-04-24 16:35:06 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-04-24 16:35:06 +0200 |
| commit | ec5e27bb7cc7808d7128eae4e7e67910f40492c0 (patch) | |
| tree | dd750032f3dd0f1d4e443b44f5b0fcf0d8a5ba11 /odoo/addons/base | |
| parent | 3b3f6cc0694b95cfbb0300cbff9aa6d9a3a6fe7e (diff) | |
| parent | 7fd9dbdd9f8f30424cfb977b83a3c463889bb710 (diff) | |
[MERGE] forward port branch saas-11.2 up to 7fd9dbdd9f8
Diffstat (limited to 'odoo/addons/base')
| -rw-r--r-- | odoo/addons/base/static/src/js/res_config_settings.js | 19 | ||||
| -rw-r--r-- | odoo/addons/base/static/tests/base_settings_tests.js | 58 |
2 files changed, 76 insertions, 1 deletions
diff --git a/odoo/addons/base/static/src/js/res_config_settings.js b/odoo/addons/base/static/src/js/res_config_settings.js index 623b452a91e..caae87cc183 100644 --- a/odoo/addons/base/static/src/js/res_config_settings.js +++ b/odoo/addons/base/static/src/js/res_config_settings.js @@ -1,6 +1,7 @@ odoo.define('base.settings', function (require) { "use strict"; +var BasicModel = require('web.BasicModel'); var core = require('web.core'); var config = require('web.config'); var FormView = require('web.FormView'); @@ -346,10 +347,27 @@ var BaseSettingController = FormController.extend({ }, }); +var BaseSettingsModel = BasicModel.extend({ + /** + * @override + */ + save: function (recordID) { + var self = this; + return this._super.apply(this, arguments).then(function (result) { + // we remove here the res_id, because the record should still be + // considered new. We want the web client to always perform a + // default_get to fetch the settings anew. + delete self.localData[recordID].res_id; + return result; + }); + }, +}); + var BaseSettingView = FormView.extend({ jsLibs: [], config: _.extend({}, FormView.prototype.config, { + Model: BaseSettingsModel, Renderer: BaseSettingRenderer, Controller: BaseSettingController, }), @@ -370,6 +388,7 @@ var BaseSettingView = FormView.extend({ view_registry.add('base_settings', BaseSettingView); return { + Model: BaseSettingsModel, Renderer: BaseSettingRenderer, Controller: BaseSettingController, }; diff --git a/odoo/addons/base/static/tests/base_settings_tests.js b/odoo/addons/base/static/tests/base_settings_tests.js index ae46cacfbc4..e4e5dc0527d 100644 --- a/odoo/addons/base/static/tests/base_settings_tests.js +++ b/odoo/addons/base/static/tests/base_settings_tests.js @@ -6,6 +6,8 @@ var view_registry = require('web.view_registry'); var createView = testUtils.createView; var BaseSettingsView = view_registry.get('base_settings'); +var createActionManager = testUtils.createActionManager; + QUnit.module('base_settings_tests', { beforeEach: function () { @@ -83,5 +85,59 @@ QUnit.module('base_settings_tests', { assert.strictEqual(form.$('.notFound').hasClass('o_hidden'),false,"record not found message shown"); form.destroy(); }); + + QUnit.test('settings views does not read existing id when coming back in breadcrumbs', function (assert) { + assert.expect(7); + + var actions = [{ + id: 1, + name: 'Settings view', + res_model: 'project', + type: 'ir.actions.act_window', + views: [[1, 'form']], + }, { + id: 4, + name: 'Other action', + res_model: 'project', + type: 'ir.actions.act_window', + views: [[2, 'list']], + }]; + var archs = { + 'project,1,form': '<form string="Settings" js_class="base_settings">' + + '<div class="app_settings_block" string="CRM" data-key="crm">' + + '<button name="4" string="Execute action" type="action"/>' + + '</div>' + + '</form>', + 'project,2,list': '<tree><field name="foo"/></tree>', + 'project,false,search': '<search></search>', + }; + + var actionManager = createActionManager({ + actions: actions, + archs: archs, + data: this.data, + mockRPC: function (route, args) { + if (args.method) { + assert.step(args.method); + } + return this._super.apply(this, arguments); + }, + }); + + actionManager.doAction(1); + actionManager.$('button[name="4"]').click(); + $('.o_control_panel .breadcrumb li a').click(); + assert.verifySteps([ + 'load_views', // initial setting action + 'default_get', // this is a setting view => create new record + 'create', // when we click on action button => save + 'read', // with save, we have a reload... (not necessary actually) + 'load_views', // for other action in breadcrumb, + // with a searchread (not shown here since it is a route) + 'default_get', // when we come back, we want to restart from scratch + ]); + + actionManager.destroy(); + }); +}); }); -});
\ No newline at end of file |
