From 272d47868cc5b95f56735f10a9b8777d05fd34fe Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Fri, 4 Feb 2022 16:41:15 +0000 Subject: [PATCH] [IMP] core: do not call create without values Whenever a record is modified in a demo/data file, create will still be called, but with an empty list of values. This flow is correctly managed in the core orm code, but a lot of custom logic in create overrides is triggered for nothing. This commit makes sure that create is not called with an empty list when there is no record to create (i.e. only records to update) during files imports (including modules demo/data loading). Part-of: odoo/odoo#84055 --- odoo/models.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/odoo/models.py b/odoo/models.py index f595f8b304b..42a662be244 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -4470,19 +4470,20 @@ Fields: _logger.warning("Creating record %s in module %s.", data['xml_id'], module) # create records - records = self._load_records_create([data['values'] for data in to_create]) - for data, record in zip(to_create, records): - data['record'] = record - if data.get('xml_id'): - # add XML ids for parent records that have just been created - for parent_model, parent_field in self._inherits.items(): - if not data['values'].get(parent_field): - imd_data_list.append({ - 'xml_id': f"{data['xml_id']}_{parent_model.replace('.', '_')}", - 'record': record[parent_field], - 'noupdate': data.get('noupdate', False), - }) - imd_data_list.append(data) + if to_create: + records = self._load_records_create([data['values'] for data in to_create]) + for data, record in zip(to_create, records): + data['record'] = record + if data.get('xml_id'): + # add XML ids for parent records that have just been created + for parent_model, parent_field in self._inherits.items(): + if not data['values'].get(parent_field): + imd_data_list.append({ + 'xml_id': f"{data['xml_id']}_{parent_model.replace('.', '_')}", + 'record': record[parent_field], + 'noupdate': data.get('noupdate', False), + }) + imd_data_list.append(data) # create or update XMLIDs imd._update_xmlids(imd_data_list, update)