Don't fire page_unpublished signal when deleting non-live pages

This commit is contained in:
Karl Hobley 2014-07-22 09:47:21 +01:00
parent 8a0c473997
commit 9fc905c5a1
2 changed files with 31 additions and 1 deletions

View file

@ -819,6 +819,33 @@ class TestPageDelete(TestCase, WagtailTestUtils):
self.assertEqual(signal_page[0], self.child_page)
self.assertEqual(signal_page[0], signal_page[0].specific)
def test_page_delete_notlive_post(self):
# Same as above, but this makes sure the page_unpublished signal is not fired
# when if the page is not live when it is deleted
# Unpublish the page
self.child_page.live = False
self.child_page.save()
# Connect a mock signal handler to page_unpublished signal
signal_fired = [False]
def page_unpublished_handler(sender, instance, **kwargs):
signal_fired[0] = True
page_unpublished.connect(page_unpublished_handler)
# Post
post_data = {'hello': 'world'} # For some reason, this test doesn't work without a bit of POST data
response = self.client.post(reverse('wagtailadmin_pages_delete', args=(self.child_page.id, )), post_data)
# Should be redirected to explorer page
self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, )))
# Check that the page is gone
self.assertEqual(Page.objects.filter(path__startswith=self.root_page.path, slug='hello-world').count(), 0)
# Check that the page_unpublished signal was not fired
self.assertFalse(signal_fired[0])
class TestPageSearch(TestCase, WagtailTestUtils):
def setUp(self):

View file

@ -376,7 +376,10 @@ def delete(request, page_id):
raise PermissionDenied
if request.POST:
page_unpublished.send(sender=page.specific_class, instance=page.specific)
# If the page is live, send the unpublished signal
if page.live:
page_unpublished.send(sender=page.specific_class, instance=page.specific)
parent_id = page.get_parent().id
page.delete()
messages.success(request, _("Page '{0}' deleted.").format(page.title))