From 19cbbb21fb42e208bef55b4bcc62ed08cea4c742 Mon Sep 17 00:00:00 2001 From: Martin Geubelle Date: Thu, 1 Jun 2017 11:51:21 +0200 Subject: [PATCH] =?UTF-8?q?[FIX]=20web:=20handle=20=C2=B4domain=C2=B4=20wi?= =?UTF-8?q?dget=20rendering=20without=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When creating a new record where the ´domain´ widget is set in the view with an associated model but this model field has no value, an rpc (search_count) was done on an unknown model, that causes a traceback. To avoid this, the rpc is not done if the model is not set. --- .../static/src/js/views/basic/basic_model.js | 5 +++ addons/web/static/tests/views/form_tests.js | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index eef858ddcfa..16970b2c21b 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1645,6 +1645,11 @@ var BasicModel = AbstractModel.extend({ }); if (!hasChanged) { return $.when(); + } else if (!domainModel) { + return $.when({ + model: domainModel, + nbRecords: 0, + }); } var def = $.Deferred(); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 132777a8c08..c3cdbdc62d0 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4820,5 +4820,37 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('render domain field widget without model', function (assert) { + assert.expect(3); + + this.data.partner.fields.model_name = { string: "Model name", type: "char" }; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '
', + mockRPC: function (route, args) { + if (args.method === 'search_count') { + assert.strictEqual(args.model, 'test', + "should search_count on test"); + } + return this._super.apply(this, arguments); + }, + }); + + assert.strictEqual(form.$('.o_field_widget[name="display_name"]').text(), "Select a model to add a filter.", + "should contain an error message saying the model is missing"); + form.$('input[name="model_name"]').val("test").trigger("input"); + assert.notStrictEqual(form.$('.o_field_widget[name="display_name"]').text(), "Select a model to add a filter.", + "should not contain an error message anymore"); + form.destroy(); + }); + }); });