Skip to content

Commit 64599e2

Browse files
committed
[FIX] product_variant_default_code: avoid unnecessary writes
Optimize default_code computation to avoid: - Unnecessary write operations when the value hasn't changed - PostgreSQL serialization errors in concurrent transactions - Processing when no reference_mask is defined (early return)
1 parent 4c280b1 commit 64599e2

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

product_variant_default_code/models/product.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,11 @@ def _compute_default_code(self):
217217
self.env.cr.flush() # https://github.com/odoo/odoo/blob/16.0/odoo/models.py#L5592
218218
for rec in self:
219219
if not rec.manual_code:
220-
rec.default_code = rec._generate_default_code()
220+
new_code = rec._generate_default_code()
221+
# Only write if the value actually changed to avoid unnecessary
222+
# write_date updates that can cause PostgreSQL serialization errors
223+
if rec.default_code != new_code:
224+
rec.default_code = new_code
221225

222226
def _inverse_default_code(self):
223227
for rec in self:
@@ -230,6 +234,8 @@ def _generate_default_code(self):
230234
):
231235
return None
232236
else:
237+
if not self.product_tmpl_id.reference_mask:
238+
return None
233239
product_attrs = defaultdict(str)
234240
reference_mask = ReferenceMask(self.product_tmpl_id.reference_mask)
235241
main_lang = self.product_tmpl_id._guess_main_lang()

0 commit comments

Comments
 (0)