stock_location_tray: Optimize creation of xmlids in batch

Use the multi creation on records to create all the xmlids at once.
This commit is contained in:
Guewen Baconnier
2020-05-25 08:47:30 +02:00
committed by Hai Lang
parent 41c0581390
commit b008f3bd58
2 changed files with 12 additions and 3 deletions

View File

@@ -3,7 +3,7 @@
{
"name": "Location Trays",
"summary": "Organize a location as a matrix of cells",
"version": "13.0.1.0.0",
"version": "13.0.1.0.1",
"category": "Stock",
"author": "Camptocamp, Odoo Community Association (OCA)",
"license": "AGPL-3",

View File

@@ -241,6 +241,13 @@ class StockLocation(models.Model):
Called from stock_location_tray/demo/stock_location_demo.xml.
"""
xmlids_to_create = []
def has_ref(xmlid):
ModelData = self.env["ir.model.data"]
__, res_id = ModelData.xmlid_to_res_model_res_id(xmlid)
return bool(res_id)
for location in self:
if not location.cell_in_tray_type_id:
continue
@@ -260,8 +267,8 @@ class StockLocation(models.Model):
tray_name, location.posx, location.posy
)
cell_xmlid = "{}.{}".format(module, cell_external_id)
if not self.env.ref(cell_xmlid, raise_if_not_found=False):
self.env["ir.model.data"].create(
if not has_ref(cell_xmlid):
xmlids_to_create.append(
{
"name": cell_external_id,
"module": module,
@@ -270,3 +277,5 @@ class StockLocation(models.Model):
"noupdate": tray_external.noupdate,
}
)
self.env["ir.model.data"].create(xmlids_to_create)