Added page_published signal

This commit is contained in:
Karl Hobley 2014-06-30 14:16:46 +01:00
parent c4c66ba780
commit 865459e5eb
3 changed files with 33 additions and 0 deletions

View file

@ -7,6 +7,7 @@ from django.core.paginator import Paginator
from wagtail.tests.models import SimplePage, EventPage, StandardIndex, StandardChild, BusinessIndex, BusinessChild, BusinessSubIndex
from wagtail.tests.utils import unittest, WagtailTestUtils
from wagtail.wagtailcore.models import Page, PageRevision
from wagtail.wagtailcore.signals import page_published
from wagtail.wagtailusers.models import UserProfile
@ -170,6 +171,15 @@ class TestPageCreation(TestCase, WagtailTestUtils):
self.assertFalse(page.live)
def test_create_simplepage_post_publish(self):
# 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
post_data = {
'title': "New page!",
'content': "Some content",
@ -187,6 +197,10 @@ class TestPageCreation(TestCase, WagtailTestUtils):
self.assertIsInstance(page, SimplePage)
self.assertTrue(page.live)
# Check that the page_published signal was fired
self.assertTrue(signal_fired[0])
self.assertEqual(signal_page[0], page)
def test_create_simplepage_post_submit(self):
# Create a moderator user for testing email
moderator = User.objects.create_superuser('moderator', 'moderator@email.com', 'password')
@ -327,6 +341,14 @@ class TestPageEdit(TestCase, WagtailTestUtils):
self.assertTrue(child_page_new.has_unpublished_changes)
def test_page_edit_post_publish(self):
# 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)
# Tests publish from edit page
post_data = {
'title': "I've been edited!",
@ -343,6 +365,10 @@ class TestPageEdit(TestCase, WagtailTestUtils):
child_page_new = SimplePage.objects.get(id=self.child_page.id)
self.assertEqual(child_page_new.title, post_data['title'])
# Check that the page_published signal was fired
self.assertTrue(signal_fired[0])
self.assertEqual(signal_page[0], child_page_new)
# The page shouldn't have "has_unpublished_changes" flag set
self.assertFalse(child_page_new.has_unpublished_changes)

View file

@ -13,6 +13,7 @@ from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailadmin import tasks, hooks, signals
from wagtail.wagtailcore.models import Page, PageRevision
from wagtail.wagtailcore.signals import page_published
@permission_required('wagtailadmin.access_admin')
@ -158,6 +159,7 @@ def create(request, content_type_app_name, content_type_model_name, parent_page_
page.save_revision(user=request.user, submitted_for_moderation=is_submitting)
if is_publishing:
page_published.send(sender=page_class, page=page)
messages.success(request, _("Page '{0}' published.").format(page.title))
elif is_submitting:
messages.success(request, _("Page '{0}' submitted for moderation.").format(page.title))
@ -238,6 +240,7 @@ def edit(request, page_id):
page.save_revision(user=request.user, submitted_for_moderation=is_submitting)
if is_publishing:
page_published.send(sender=page.__class__, page=page)
messages.success(request, _("Page '{0}' published.").format(page.title))
elif is_submitting:
messages.success(request, _("Page '{0}' submitted for moderation.").format(page.title))

View file

@ -0,0 +1,4 @@
from django.dispatch import Signal
page_published = Signal(providing_args=['page'])