diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 6f62483a81c..f16317a29e3 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -254,6 +254,7 @@ var SelectCreateDialog = ViewDialog.extend({ } }, selection_changed: function (event) { + event.stopPropagation(); this.$footer.find(".o_select_button").prop('disabled', !event.data.selection.length); }, search: function (event) { diff --git a/addons/web/static/tests/views/view_dialogs_tests.js b/addons/web/static/tests/views/view_dialogs_tests.js index fa7e783e34d..e45b4c13c83 100644 --- a/addons/web/static/tests/views/view_dialogs_tests.js +++ b/addons/web/static/tests/views/view_dialogs_tests.js @@ -4,6 +4,9 @@ odoo.define('web.view_dialogs_tests', function (require) { var testUtils = require('web.test_utils'); var dialogs = require('web.view_dialogs'); var Widget = require('web.Widget'); +var FormView = require('web.FormView'); + +var createView = testUtils.createView; QUnit.module('Views', { beforeEach: function () { @@ -13,6 +16,7 @@ QUnit.module('Views', { display_name: { string: "Displayed name", type: "char" }, foo: {string: "Foo", type: 'char'}, bar: {string: "Bar", type: "boolean"}, + instrument: {string: 'Instruments', type: 'many2one', relation: 'instrument'}, }, records: [ {id: 1, foo: 'blip', display_name: 'blipblip', bar: true}, @@ -20,9 +24,35 @@ QUnit.module('Views', { {id: 3, foo: 'piou piou', display_name: "Jack O'Neill", bar: true}, ], }, - }; + instrument: { + fields: { + name: {string: "name", type: "char"}, + badassery: {string: 'level', type: 'many2many', relation: 'badassery', domain: [['level', '=', 'Awsome']]}, + }, + }, + + badassery: { + fields: { + level: {string: 'level', type: "char"}, + }, + records: [ + {id: 1, level: 'Awsome'}, + ], + }, + + product: { + fields : { + name: {string: "name", type: "char" }, + partner : {string: 'Doors', type: 'one2many', relation: 'partner'}, + }, + records: [ + {id: 1, name: 'The end'}, + ], + }, + }; }, + }, function () { QUnit.module('view_dialogs'); @@ -243,6 +273,98 @@ QUnit.module('Views', { parent.destroy(); }); + QUnit.test('SelectCreateDialog cascade x2many in create mode', function (assert) { + assert.expect(5); + + var form = createView({ + View: FormView, + model: 'product', + data: this.data, + arch: '
', + res_id: 1, + archs: { + 'partner,false,form': '', + + 'instrument,false,form': '', + + 'badassery,false,list': '