summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2017-04-26 13:47:32 +0200
committerGéry Debongnie <ged@odoo.com>2017-04-28 11:32:05 +0200
commit9da93dc2327d43958d47a3f1029f8de86fc007ee (patch)
tree7d4aae967f28a08383a20df292310c0053971f15
parent76e6a0e3560db8257ab0d183463a894ace1e3a7e (diff)
[FIX] web: prevent record creation in M2O with option {'no_create': True}
before this fix, if you enter a random string and exit focus you'll be prompted to create it.
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js2
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js10
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js21
3 files changed, 27 insertions, 6 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 459b529c748..481f5df89ad 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -93,7 +93,7 @@ var FieldMany2One = AbstractField.extend({
this._super.apply(this, arguments);
this.limit = 7;
this.orderer = new concurrency.DropMisordered();
- this.can_create = 'can_create' in this.attrs ? this.attrs.can_create : true;
+ this.can_create = ('can_create' in this.attrs ? this.attrs.can_create : true) && !this.nodeOptions.no_create;
this.can_write = 'can_write' in this.attrs ? this.attrs.can_write : true;
this.nodeOptions = _.defaults(this.nodeOptions, {
quick_create: true,
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index 7ac38cad25f..dbe91188242 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -1409,12 +1409,12 @@ QUnit.module('basic_fields', {
'The value should be displayed properly.');
form.$buttons.find('.o_form_button_edit').click();
- assert.strictEqual(form.$('input.o_form_input').val(), '9.10',
+ assert.strictEqual(form.$('input.o_form_input').first().val(), '9.10',
'The input should be rendered without the currency symbol.');
assert.strictEqual(form.$('input.o_form_input').parent().children().first().text(), '$',
'The input should be preceded by a span containing the currency symbol.');
- form.$('input.o_form_input').val('108.2458938598598').trigger('input');
+ form.$('input.o_form_input').first().val('108.2458938598598').trigger('input');
assert.strictEqual(form.$('input.o_form_input').val(), '108.2458938598598',
'The value should not be formated yet.');
@@ -1450,13 +1450,13 @@ QUnit.module('basic_fields', {
'The value should be displayed properly.');
form.$buttons.find('.o_form_button_edit').click();
- assert.strictEqual(form.$('input.o_form_input').val(), '0.00',
+ assert.strictEqual(form.$('input.o_form_input').first().val(), '0.00',
'The input should be rendered without the currency symbol.');
assert.strictEqual(form.$('input.o_form_input').parent().children().eq(1).text(), '€',
'The input should be followed by a span containing the currency symbol.');
- form.$('input.o_form_input').val('108.2458938598598').trigger('input');
- assert.strictEqual(form.$('input.o_form_input').val(), '108.2458938598598',
+ form.$('input.o_form_input').first().val('108.2458938598598').trigger('input');
+ assert.strictEqual(form.$('input.o_form_input').first().val(), '108.2458938598598',
'The value should not be formated yet.');
form.$buttons.find('.o_form_button_save').click();
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index b497e6da3f4..3996da81854 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -557,6 +557,27 @@ QUnit.module('relational_fields', {
form.destroy();
});
+ QUnit.test('no_create option on a many2one', function (assert) {
+ assert.expect(1);
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners">' +
+ '<sheet>' +
+ '<field name="product_id" options="{\'no_create\': True}"/>' +
+ '</sheet>' +
+ '</form>',
+ });
+
+ form.$('.o_form_field_many2one input').focus();
+ form.$('.o_form_field_many2one input').val('new partner').trigger('keyup').trigger('focusout');
+
+ assert.strictEqual($('.modal').length, 0, "should not display the create modal");
+ form.destroy();
+ });
+
QUnit.module('FieldOne2Many');
QUnit.test('one2many basic properties', function (assert) {