[IMP] web: Numeric fields can be non-formatted

This commit introduces a new option in fields inheriting from type Numeric
which is `format`.

By default, Numeric fields are formatted according to their subtypes and locale
Adding, in a view, the option format set to a falsy value
will prevent the field's value from being formatted.

```
<field name="int_field" options="{\'format\': false}"/>
```

Task 2050119
This commit is contained in:
Lucas Perais (lpe)
2020-04-17 13:56:08 +00:00
committed by Aaron Bohy
parent 7ace5a986a
commit 4c1feefd13
3 changed files with 93 additions and 1 deletions
@@ -4812,6 +4812,70 @@ QUnit.module('basic_fields', {
form.destroy();
});
QUnit.test('integer field without formatting', async function (assert) {
assert.expect(3);
this.data.partner.records = [{
'id': 999,
'int_field': 8069,
}];
var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
arch: '<form string="Partners">' +
'<field name="int_field" options="{\'format\': \'false\'}"/>' +
'</form>',
res_id: 999,
translateParameters: {
thousands_sep: ",",
grouping: [3, 0],
},
});
assert.ok(form.$('.o_form_view').hasClass('o_form_readonly'), 'Form in readonly mode');
assert.strictEqual(form.$('.o_field_widget[name=int_field]').text(), '8069',
'Integer value must not be formatted');
await testUtils.form.clickEdit(form);
assert.strictEqual(form.$('.o_field_widget').val(), '8069',
'Integer value must not be formatted');
form.destroy();
});
QUnit.test('integer field is formatted by default', async function (assert) {
assert.expect(3);
this.data.partner.records = [{
'id': 999,
'int_field': 8069,
}];
var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
arch: '<form string="Partners">' +
'<field name="int_field" />' +
'</form>',
res_id: 999,
translateParameters: {
thousands_sep: ",",
grouping: [3, 0],
},
});
assert.ok(form.$('.o_form_view').hasClass('o_form_readonly'), 'Form in readonly mode');
assert.strictEqual(form.$('.o_field_widget[name=int_field]').text(), '8,069',
'Integer value must be formatted by default');
await testUtils.form.clickEdit(form);
assert.strictEqual(form.$('.o_field_widget').val(), '8,069',
'Integer value must be formatted by default');
form.destroy();
});
QUnit.module('FieldFloatTime');