Log delete for all descendents of pages, not just direct children

This leads to a misleading audit log, where some pages aren't shown as being deleted
pull/8321/head
Jake Howard 2022-04-06 14:25:29 +01:00 zatwierdzone przez Matt Westcott
rodzic a405beba24
commit ee03f9d975
2 zmienionych plików z 17 dodań i 11 usunięć

Wyświetl plik

@ -559,9 +559,8 @@ class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase):
user=user,
deleted=True,
)
if self.get_children().exists():
for child in self.get_children():
log_deletion(child.specific, user)
for child in self.get_descendants():
log_deletion(child.specific, user)
log_deletion(self.specific, user)
# this is a Page instance, so carry on as we were

Wyświetl plik

@ -221,16 +221,23 @@ class TestAuditLog(TestCase):
child = self.home_page.add_child(
instance=SimplePage(title="Another child", slug="child-page-2", content="hello")
)
child.add_child(
instance=SimplePage(
title="Grandchild", slug="grandchild-page", content="hello"
)
)
child.delete()
self.assertEqual(PageLogEntry.objects.filter(action='wagtail.delete').count(), 1)
# check deleting a parent page logs child deletion
# check deleting a parent page logs descendent deletion
self.home_page.delete()
self.assertEqual(PageLogEntry.objects.filter(action='wagtail.delete').count(), 3)
self.assertListEqual(
list(PageLogEntry.objects.filter(action='wagtail.delete').values_list('label', flat=True)),
['Homepage (simple page)', 'Child (simple page)', 'Another child (simple page)']
self.assertEqual(PageLogEntry.objects.filter(action='wagtail.delete').count(), 4)
self.assertEqual(
set(PageLogEntry.objects.filter(action='wagtail.delete').values_list('label', flat=True)),
{
'Homepage (simple page)',
'Grandchild (simple page)',
'Child (simple page)',
'Another child (simple page)',
},
)
def test_workflow_actions(self):