diff --git a/trytond/trytond/model/modelstorage.py b/trytond/trytond/model/modelstorage.py index 669cfbb4e0..06e6106a2a 100644 --- a/trytond/trytond/model/modelstorage.py +++ b/trytond/trytond/model/modelstorage.py @@ -234,14 +234,16 @@ class ModelStorage(Model): return pool = Pool() Log = pool.get('ir.model.log') - transaction = Transaction() - if user is None: - user = transaction.user - for record in records: - assert record.id >= 0 - transaction.log_records.append(Log( - resource=record, event=event, target=target, user=user, - **extra)) + for transaction, sub_records in groupby( + records, lambda r: r._transaction): + with Transaction().set_current_transaction(transaction): + if user is None: + user = transaction.user + for record in records: + assert record.id >= 0 + transaction.log_records.append(Log( + resource=record, event=event, target=target, + user=user, **extra)) @classmethod def preprocess_values(cls, mode, values):