Delete only the records marked to be deleted when restoring history

Closes #14913
(grafted from 2335dba4dc447dbcae94d99097911460439ef02a)

--HG--
branch : 8.0
This commit is contained in:
Nicolas Évrard
2026-06-26 15:41:27 +02:00
parent b020f0f081
commit 5834e156f0
2 changed files with 25 additions and 1 deletions
+1 -1
View File
@@ -942,7 +942,7 @@ class ModelSQL(ModelStorage):
if to_delete:
cursor.execute(*table.delete(
where=fields.SQL_OPERATORS['in'](table.id, ids)))
where=fields.SQL_OPERATORS['in'](table.id, to_delete)))
cls._insert_history(list(to_delete), True)
if to_update:
cls._insert_history(list(to_update))
+24
View File
@@ -238,6 +238,30 @@ class HistoryTestCase(TestCase):
history = History(history_id)
self.assertEqual(history.dico, {'a': 1})
@with_transaction()
def test_restore_history_with_deletion(self):
"Test restoring records when some should be deleted"
pool = Pool()
History = pool.get('test.history')
transaction = Transaction()
history = History(value=1)
history.save()
first = history.create_date
transaction.commit()
history_2 = History(value=2)
history_2.save()
transaction.commit()
History.restore_history([history.id, history_2.id], first)
History.read([history.id], {'value'})
with self.assertRaises(AccessError):
History.read([history_2.id], ['value'])
@with_transaction()
def test_restore_history_before(self):
'Test restore history before'