summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2017-06-01 11:51:21 +0200
committerMartin Geubelle <mge@odoo.com>2017-06-01 13:23:30 +0200
commit19cbbb21fb42e208bef55b4bcc62ed08cea4c742 (patch)
treea96585ab35f7de2ef9a3fb92665bad91ed1ab787 /addons
parent2f4d3d0e667092f70f44db03437473acf4ad5b32 (diff)
[FIX] web: handle ´domain´ widget rendering without model
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.
Diffstat (limited to 'addons')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js5
-rw-r--r--addons/web/static/tests/views/form_tests.js32
2 files changed, 37 insertions, 0 deletions
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: '<form string="Partners">' +
+ '<group>' +
+ '<field name="model_name"/>' +
+ '<field name="display_name" widget="domain" options="{\'model\': \'model_name\'}"/>' +
+ '</group>' +
+ '</form>',
+ 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();
+ });
+
});
});