Skip to content

Commit cd0dfd9

Browse files
haklyrayclaude
authored andcommitted
fix: audit_create uses @api.model breaking model_create_multi overrides
audit_create was decorated with @api.model (single-dict signature) and called origin(self, vals) with a single dict. This bypassed the @api.model_create_multi wrapper on downstream create overrides, causing their logic to be silently skipped when audit rules are active. Changed audit_create to use @api.model_create_multi so it passes vals_list through the origin chain correctly. Also updated the Markup sanitization loop to handle multiple records. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b99d82c commit cd0dfd9

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

spp_audit/tools/decorator.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ def audit_decorator(method):
2222
audit_unlink, depending on the value of the method parameter.
2323
"""
2424

25-
@api.model
26-
def audit_create(self, vals):
27-
result = audit_create.origin(self, vals)
28-
record = self.browse(result) if isinstance(result, int | long) else result
25+
@api.model_create_multi
26+
def audit_create(self, vals_list):
27+
result = audit_create.origin(self, vals_list)
28+
records = self.browse(result) if isinstance(result, list) else result
2929
rules = self.get_audit_rules("create")
3030

3131
# Use sudo() to avoid access errors when reading computed fields
3232
new_values = (
33-
record.sudo() # nosemgrep: odoo-sudo-without-context
33+
records.sudo() # nosemgrep: odoo-sudo-without-context
3434
.with_context(allowed_company_ids=[])
3535
.read( # nosemgrep: odoo-sudo-without-context
3636
load="_classic_write"
@@ -39,8 +39,9 @@ def audit_create(self, vals):
3939
if new_values:
4040
keys = new_values[0].keys()
4141
for key in keys:
42-
if str(type(new_values[0][key])) == "<class 'markupsafe.Markup'>":
43-
new_values[0][key] = str(new_values[0][key])
42+
for nv in new_values:
43+
if str(type(nv[key])) == "<class 'markupsafe.Markup'>":
44+
nv[key] = str(nv[key])
4445

4546
rules.log("create", new_values=new_values)
4647
return result

0 commit comments

Comments
 (0)