Delete only the records marked to be deleted when restoring history

Closes #14913
This commit is contained in:
Nicolas Évrard committed 2026-06-26 15:41:27 +02:00
1 parent 2df52f729f
commit bba6e052cb
2 files changed
+25 -1

No files matched your search

+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'