[FIX] web: handle x2m commands with reference as default
Before this rev. it was not possible to define a value for a reference field in x2m commands as default value. Courtesy of @kaerdsar. Closes #24070
This commit is contained in:
@@ -3613,8 +3613,9 @@ var BasicModel = AbstractModel.extend({
|
||||
if (isFieldInView) {
|
||||
var field = r.fields[fieldName];
|
||||
var fieldType = field.type;
|
||||
var rec;
|
||||
if (fieldType === 'many2one') {
|
||||
var rec = self._makeDataPoint({
|
||||
rec = self._makeDataPoint({
|
||||
context: r.context,
|
||||
modelName: field.relation,
|
||||
data: {id: r._changes[fieldName]},
|
||||
@@ -3622,6 +3623,16 @@ var BasicModel = AbstractModel.extend({
|
||||
});
|
||||
r._changes[fieldName] = rec.id;
|
||||
many2ones[fieldName] = true;
|
||||
} else if (fieldType === 'reference') {
|
||||
var reference = r._changes[fieldName].split(',');
|
||||
rec = self._makeDataPoint({
|
||||
context: r.context,
|
||||
modelName: reference[0],
|
||||
data: {id: parseInt(reference[1])},
|
||||
parentID: r.id,
|
||||
});
|
||||
r._changes[fieldName] = rec.id;
|
||||
many2ones[fieldName] = true;
|
||||
} else if (_.contains(['one2many', 'many2many'], fieldType)) {
|
||||
var x2mCommands = commands[0][2][fieldName];
|
||||
defs.push(self._processX2ManyCommands(r, fieldName, x2mCommands));
|
||||
|
||||
@@ -11248,6 +11248,38 @@ QUnit.module('relational_fields', {
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('default_get a reference field in a x2m', function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
this.data.partner.fields.turtles.default = [
|
||||
[0, false, {turtle_ref: 'product,37'}]
|
||||
];
|
||||
|
||||
var form = createView({
|
||||
View: FormView,
|
||||
model: 'partner',
|
||||
data: this.data,
|
||||
arch: '<form string="Partners">' +
|
||||
'<sheet>' +
|
||||
'<field name="turtles">' +
|
||||
'<tree>' +
|
||||
'<field name="turtle_ref"/>' +
|
||||
'</tree>' +
|
||||
'</field>' +
|
||||
'</sheet>' +
|
||||
'</form>',
|
||||
viewOptions: {
|
||||
mode: 'edit',
|
||||
},
|
||||
archs: {
|
||||
'turtle,false,form': '<form><field name="display_name"/><field name="turtle_ref"/></form>',
|
||||
},
|
||||
});
|
||||
assert.strictEqual(form.$('.o_field_one2many[name="turtles"] .o_data_row:first').text(), "xphone",
|
||||
"the default value should be correctly handled");
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('widget reference on char field, reset by onchange', function (assert) {
|
||||
assert.expect(4);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user