[FIX] web: trying to create record based on name_create w/o _rec_name
There are orm models that don't have _rec_name defined. The orm doesn't allow creation of record via name_create if _rec_name is not defined in the model. This commit considers this fact, such that if name_create returns false, we don't proceed on displaying the non-existing record. Note: _rec_name defaults to 'name' if not specified so only few models don't have _rec_name. closes odoo/odoo#54270 Task-id: 2285036 X-original-commit: 676c2b8e4fdf7347d44bc5afb7ca51d39338a527 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
@@ -1632,6 +1632,12 @@ var BasicModel = AbstractModel.extend({
|
||||
args: [data.display_name],
|
||||
context: this._getContext(record, {fieldName: fieldName, viewType: options.viewType}),
|
||||
});
|
||||
// Check if a record is really created. Models without defined
|
||||
// _rec_name cannot create record based on name_create.
|
||||
if (!result) {
|
||||
record._changes[fieldName] = false;
|
||||
return Promise.resolve();
|
||||
}
|
||||
data = {id: result[0], display_name: result[1]};
|
||||
}
|
||||
|
||||
|
||||
@@ -1184,6 +1184,31 @@ QUnit.module('fields', {}, function () {
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('form: quick create for field that returns false after name_create call', async function (assert) {
|
||||
assert.expect(3);
|
||||
const form = await createView({
|
||||
View: FormView,
|
||||
model: 'partner',
|
||||
data: this.data,
|
||||
arch: '<form><field name="trululu"/></form>',
|
||||
mockRPC: function (route, args) {
|
||||
const result = this._super.apply(this, arguments);
|
||||
if (args.method === 'name_create') {
|
||||
assert.step('name_create');
|
||||
// Resolve the name_create call to false. This is possible if
|
||||
// _rec_name for the model of the field is unassigned.
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
});
|
||||
await testUtils.fields.many2one.searchAndClickItem('trululu', { search: 'beam' });
|
||||
assert.verifySteps(['name_create'], 'attempt to name_create');
|
||||
assert.strictEqual(form.$(".o_input_dropdown input").val(), "",
|
||||
"the input should contain no text after search and click")
|
||||
form.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('list: quick create then save directly', async function (assert) {
|
||||
assert.expect(8);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user