Merge branch 'kaedroho-publish_unpublish_from_scheduled_publishing'

pull/493/head^2
Matt Westcott 2014-07-22 11:28:24 +01:00
commit f5e6b0a9be
2 zmienionych plików z 42 dodań i 0 usunięć

Wyświetl plik

@ -5,7 +5,9 @@ from optparse import make_option
from django.core.management.base import BaseCommand
from django.utils import dateparse, timezone
from wagtail.wagtailcore.models import Page, PageRevision
from wagtail.wagtailcore.signals import page_published, page_unpublished
def revision_date_expired(r):
@ -54,8 +56,16 @@ class Command(BaseCommand):
else:
print("No expired pages to be deactivated found.")
else:
# need to get the list of expired pages before the update,
# so that we can fire the page_unpublished signal on them afterwards
expired_pages_list = list(expired_pages)
expired_pages.update(expired=True, live=False)
# Fire page_unpublished signal for all expired pages
for page in expired_pages_list:
page_unpublished.send(sender=page.specific_class, instance=page.specific)
# 2. get all page revisions for moderation that have been expired
expired_revs = [
r for r in PageRevision.objects.filter(
@ -108,3 +118,6 @@ class Command(BaseCommand):
# just run publish for the revision -- since the approved go
# live datetime is before now it will make the page live
rp.publish()
# Fire page_published signal
page_published.send(sender=rp.page.specific_class, instance=rp.page.specific)

Wyświetl plik

@ -7,6 +7,7 @@ from django.core import management
from django.utils import timezone
from wagtail.wagtailcore.models import Page, PageRevision
from wagtail.wagtailcore.signals import page_published, page_unpublished
from wagtail.tests.models import SimplePage
@ -96,6 +97,15 @@ class TestPublishScheduledPagesCommand(TestCase):
self.root_page = Page.objects.get(id=2)
def test_go_live_page_will_be_published(self):
# Connect a mock signal handler to page_published signal
signal_fired = [False]
signal_page = [None]
def page_published_handler(sender, instance, **kwargs):
signal_fired[0] = True
signal_page[0] = instance
page_published.connect(page_published_handler)
page = SimplePage(
title="Hello world!",
slug="hello-world",
@ -116,6 +126,11 @@ class TestPublishScheduledPagesCommand(TestCase):
self.assertTrue(p.live)
self.assertFalse(PageRevision.objects.filter(page=p).exclude(approved_go_live_at__isnull=True).exists())
# 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_future_go_live_page_will_not_be_published(self):
page = SimplePage(
title="Hello world!",
@ -138,6 +153,15 @@ class TestPublishScheduledPagesCommand(TestCase):
self.assertTrue(PageRevision.objects.filter(page=p).exclude(approved_go_live_at__isnull=True).exists())
def test_expired_page_will_be_unpublished(self):
# Connect a mock signal handler to page_unpublished signal
signal_fired = [False]
signal_page = [None]
def page_unpublished_handler(sender, instance, **kwargs):
signal_fired[0] = True
signal_page[0] = instance
page_unpublished.connect(page_unpublished_handler)
page = SimplePage(
title="Hello world!",
slug="hello-world",
@ -155,6 +179,11 @@ class TestPublishScheduledPagesCommand(TestCase):
self.assertFalse(p.live)
self.assertTrue(p.expired)
# 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_future_expired_page_will_not_be_unpublished(self):
page = SimplePage(
title="Hello world!",