Initial commit
This commit is contained in:
96
env/lib/python3.10/site-packages/wagtail/admin/views/pages/unpublish.py
vendored
Normal file
96
env/lib/python3.10/site-packages/wagtail/admin/views/pages/unpublish.py
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from wagtail import hooks
|
||||
from wagtail.actions.unpublish_page import UnpublishPageAction
|
||||
from wagtail.admin.utils import get_valid_next_url_from_request
|
||||
from wagtail.admin.views.generic.models import UnpublishView
|
||||
from wagtail.models import Page
|
||||
|
||||
|
||||
class Unpublish(UnpublishView):
|
||||
model = Page
|
||||
index_url_name = "wagtailadmin_explore"
|
||||
edit_url_name = "wagtailadmin_pages:edit"
|
||||
unpublish_url_name = "wagtailadmin_pages:unpublish"
|
||||
usage_url_name = "wagtailadmin_pages:usage"
|
||||
success_message = _("Page '%(page_title)s' unpublished.")
|
||||
template_name = "wagtailadmin/pages/confirm_unpublish.html"
|
||||
header_icon = "doc-empty-inverse"
|
||||
|
||||
def setup(self, request, page_id, *args, **kwargs):
|
||||
# Rename path kwargs from pk to page_id
|
||||
return super().setup(request, page_id, *args, **kwargs)
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
return get_object_or_404(Page, id=self.pk).specific
|
||||
|
||||
def get_object_display_title(self):
|
||||
return self.object.get_admin_display_title()
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not self.object.permissions_for_user(request.user).can_unpublish():
|
||||
raise PermissionDenied
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_success_message(self):
|
||||
return self.success_message % {
|
||||
"page_title": self.object.get_admin_display_title()
|
||||
}
|
||||
|
||||
def get_next_url(self):
|
||||
next_url = get_valid_next_url_from_request(self.request)
|
||||
if next_url:
|
||||
return next_url
|
||||
return reverse(self.index_url_name, args=(self.object.get_parent().id,))
|
||||
|
||||
def get_objects_to_unpublish(self):
|
||||
objects_to_unpublish = {self.object}
|
||||
|
||||
if getattr(settings, "WAGTAIL_I18N_ENABLED", False):
|
||||
for fn in hooks.get_hooks("construct_translated_pages_to_cascade_actions"):
|
||||
fn_pages = fn([self.object], "unpublish")
|
||||
if fn_pages and isinstance(fn_pages, dict):
|
||||
for additional_pages in fn_pages.values():
|
||||
objects_to_unpublish.update(additional_pages)
|
||||
|
||||
return list(objects_to_unpublish)
|
||||
|
||||
def unpublish(self):
|
||||
hook_response = self.run_hook(
|
||||
"before_unpublish_page", self.request, self.object
|
||||
)
|
||||
if hook_response is not None:
|
||||
return hook_response
|
||||
|
||||
include_descendants = self.request.POST.get("include_descendants", False)
|
||||
|
||||
for object in self.objects_to_unpublish:
|
||||
action = UnpublishPageAction(
|
||||
object, user=self.request.user, include_descendants=include_descendants
|
||||
)
|
||||
action.execute(skip_permission_checks=True)
|
||||
|
||||
hook_response = self.run_hook("after_unpublish_page", self.request, self.object)
|
||||
if hook_response is not None:
|
||||
return hook_response
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context.update(
|
||||
{
|
||||
"page": self.object,
|
||||
"live_descendant_count": self.object.get_descendants().live().count(),
|
||||
"translation_count": len(self.objects_to_unpublish[1:]),
|
||||
"translation_descendant_count": sum(
|
||||
[
|
||||
p.get_descendants().filter(alias_of__isnull=True).live().count()
|
||||
for p in self.objects_to_unpublish[1:]
|
||||
]
|
||||
),
|
||||
}
|
||||
)
|
||||
return context
|
||||
Reference in New Issue
Block a user