From 83d848d692e6dfb65eeafe49028172bdb3511fa3 Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Tue, 26 Aug 2014 10:57:29 +0100 Subject: [PATCH] Make sure pages are unpublished before delete Fixes #570 Conflicts: wagtail/wagtailcore/models.py --- wagtail/wagtailadmin/views/pages.py | 4 ---- wagtail/wagtailcore/models.py | 9 +++++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index d678e1736..4a8b3f121 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -362,10 +362,6 @@ def delete(request, page_id): raise PermissionDenied if request.POST: - if page.live: - # Unpublish the page - page.unpublish() - parent_id = page.get_parent().id page.delete() diff --git a/wagtail/wagtailcore/models.py b/wagtail/wagtailcore/models.py index 6c15259f9..ad91a0f4d 100644 --- a/wagtail/wagtailcore/models.py +++ b/wagtail/wagtailcore/models.py @@ -9,6 +9,8 @@ from modelcluster.models import ClusterableModel from django.db import models, connection, transaction from django.db.models import get_model, Q +from django.db.models.signals import pre_delete +from django.dispatch.dispatcher import receiver from django.http import Http404 from django.core.cache import cache from django.core.handlers.wsgi import WSGIRequest @@ -894,6 +896,13 @@ def get_navigation_menu_items(): return [] +@receiver(pre_delete, sender=Page) +def unpublish_page_before_delete(sender, instance, **kwargs): + # Make sure pages are unpublished before deleting + if instance.live: + instance.unpublish() + + class Orderable(models.Model): sort_order = models.IntegerField(null=True, blank=True, editable=False) sort_order_field = 'sort_order'