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:
@@ -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))
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user