From c1256d1453078d9ceb64ea308efc39acb6cd4465 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Mon, 13 Mar 2017 11:48:03 +0100 Subject: [PATCH] [FIX] web: record with field status with domain If a m2o field status has an associated domain, it is used to match the records to display as status choices. This domain is extended so that it always matches the current status value. The code which was in charge of that was buggy when the status had no value (in that case the domain should not be extended). --- .../static/src/js/views/basic/basic_model.js | 6 ++++-- .../test/fields/relational_fields_tests.js | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 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 2cfa96a3015..8e534d4eda1 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1414,8 +1414,10 @@ var BasicModel = AbstractModel.extend({ var domain = record.getDomain({fieldName: fieldName}); if (domain.length) { var localID = record.data[fieldName]; - var element = this.localData[localID]; - domain = ["|", ["id", "=", element.data.id]].concat(domain); + if (localID) { + var element = this.localData[localID]; + domain = ["|", ["id", "=", element.data.id]].concat(domain); + } } // avoid rpc if not necessary diff --git a/addons/web/static/test/fields/relational_fields_tests.js b/addons/web/static/test/fields/relational_fields_tests.js index a7e6f12e40f..31fa1189b69 100644 --- a/addons/web/static/test/fields/relational_fields_tests.js +++ b/addons/web/static/test/fields/relational_fields_tests.js @@ -2449,6 +2449,26 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('statusbar with domain but no value (create mode)', function (assert) { + assert.expect(1); + + this.data.partner.fields.trululu.domain = "[('bar', '=', True)]"; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: + '
' + + '
' + + '
', + }); + + assert.strictEqual(form.$('.o_statusbar_status button:disabled').length, 2, "should have 2 status"); + + form.destroy(); + }); + QUnit.test('statusbar fold_field option and statusbar_visible attribute', function (assert) { assert.expect(2);