From de229914f00d9e21209e475a0b5542deeb82bf24 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Mon, 30 Jun 2014 14:22:55 +0100 Subject: [PATCH] Fire page_published signal on moderation approval --- wagtail/wagtailadmin/tests/test_pages_views.py | 15 +++++++++++++++ wagtail/wagtailadmin/views/pages.py | 1 + 2 files changed, 16 insertions(+) diff --git a/wagtail/wagtailadmin/tests/test_pages_views.py b/wagtail/wagtailadmin/tests/test_pages_views.py index 963a048b2c..1bab3b137f 100644 --- a/wagtail/wagtailadmin/tests/test_pages_views.py +++ b/wagtail/wagtailadmin/tests/test_pages_views.py @@ -200,6 +200,7 @@ class TestPageCreation(TestCase, WagtailTestUtils): # Check that the page_published signal was fired self.assertTrue(signal_fired[0]) self.assertEqual(signal_page[0], page) + self.assertEqual(signal_page[0], signal_page[0].specific) def test_create_simplepage_post_submit(self): # Create a moderator user for testing email @@ -368,6 +369,7 @@ class TestPageEdit(TestCase, WagtailTestUtils): # Check that the page_published signal was fired self.assertTrue(signal_fired[0]) self.assertEqual(signal_page[0], child_page_new) + self.assertEqual(signal_page[0], signal_page[0].specific) # The page shouldn't have "has_unpublished_changes" flag set self.assertFalse(child_page_new.has_unpublished_changes) @@ -667,6 +669,14 @@ class TestApproveRejectModeration(TestCase, WagtailTestUtils): """ This posts to the approve moderation view and checks that the page was approved """ + # Connect a mock signal handler to page_published signal + signal_fired = [False] + signal_page = [None] + def page_published_handler(sender, page, **kwargs): + signal_fired[0] = True + signal_page[0] = page + page_published.connect(page_published_handler) + # Post response = self.client.post(reverse('wagtailadmin_pages_approve_moderation', args=(self.revision.id, )), { 'foo': "Must post something or the view won't see this as a POST request", @@ -678,6 +688,11 @@ class TestApproveRejectModeration(TestCase, WagtailTestUtils): # Page must be live self.assertTrue(Page.objects.get(id=self.page.id).live) + # Check that the page_published signal was fired + self.assertTrue(signal_fired[0]) + self.assertEqual(signal_page[0], self.page) + self.assertEqual(signal_page[0], signal_page[0].specific) + def test_approve_moderation_view_bad_revision_id(self): """ This tests that the approve moderation view handles invalid revision ids correctly diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index d49864f443..f829df9c51 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -609,6 +609,7 @@ def approve_moderation(request, revision_id): if request.POST: revision.publish() + page_published.send(sender=revision.page.__class__, page=revision.page.specific) messages.success(request, _("Page '{0}' published.").format(revision.page.title)) tasks.send_notification.delay(revision.id, 'approved', request.user.id)