details:   https://code.tryton.org/tryton/commit/c54d776d9f27
branch:    default
user:      Nicolas Évrard <[email protected]>
date:      Mon Mar 16 18:42:56 2026 +0100
description:
        Call on_modification on each Model with a replaced party

        Closes #14684
diffstat:

 modules/party/party.py |  8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diffs (32 lines):

diff -r 85d1f87af225 -r c54d776d9f27 modules/party/party.py
--- a/modules/party/party.py    Tue Mar 31 13:51:29 2026 +0200
+++ b/modules/party/party.py    Mon Mar 16 18:42:56 2026 +0100
@@ -3,6 +3,7 @@
 
 import logging
 import re
+from collections import defaultdict
 
 import stdnum.exceptions
 from sql import Column, Literal
@@ -1136,6 +1137,7 @@
         source.active = False
         source.save()
 
+        models_changed = defaultdict(list)
         cursor = transaction.connection.cursor()
         for model_name, field_name in self.fields_to_replace():
             Model = pool.get(model_name)
@@ -1167,6 +1169,12 @@
                 ids = [x[0] for x in cursor]
 
             Model._insert_history(ids)
+            models_changed[Model].append((field_name, ids))
+
+        for Model, modified_fields in models_changed.items():
+            for field_name, ids in modified_fields:
+                Model.on_modification('write', Model.browse(ids), {field_name})
+
         return 'end'
 
     @classmethod

Reply via email to