mirror of
https://github.com/wagtail/wagtail.git
synced 2024-11-30 01:46:24 +01:00
[refactor] Use the cleaned form data instead of directly accessing request.POST
This commit is contained in:
parent
fc280f92a3
commit
d6c787fc51
@ -1,5 +1,4 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.shortcuts import get_object_or_404
|
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.utils.translation import ngettext
|
from django.utils.translation import ngettext
|
||||||
@ -32,6 +31,13 @@ class MoveBulkAction(PageBulkAction):
|
|||||||
aria_label = "Move pages"
|
aria_label = "Move pages"
|
||||||
template_name = "wagtailadmin/pages/bulk_actions/confirm_bulk_move.html"
|
template_name = "wagtailadmin/pages/bulk_actions/confirm_bulk_move.html"
|
||||||
action_priority = 10
|
action_priority = 10
|
||||||
|
form_class = MoveForm
|
||||||
|
destination = Page.get_first_root_node()
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
ctx = super().get_form_kwargs()
|
||||||
|
ctx['destination'] = self.destination
|
||||||
|
return ctx
|
||||||
|
|
||||||
def check_perm(self, page):
|
def check_perm(self, page):
|
||||||
return page.permissions_for_user(self.request.user).can_move()
|
return page.permissions_for_user(self.request.user).can_move()
|
||||||
@ -51,19 +57,12 @@ class MoveBulkAction(PageBulkAction):
|
|||||||
context['child_pages'] = context['page'].get_descendants().count()
|
context['child_pages'] = context['page'].get_descendants().count()
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
context = super().get_context_data(**kwargs)
|
|
||||||
destination = kwargs.get('destination', Page.get_first_root_node())
|
|
||||||
context['form'] = MoveForm(destination=destination)
|
|
||||||
return context
|
|
||||||
|
|
||||||
def prepare_action(self, pages):
|
def prepare_action(self, pages):
|
||||||
request = self.request
|
request = self.request
|
||||||
move_applicable = request.POST.dict().get("move_applicable", False)
|
move_applicable = self.cleaned_form.cleaned_data['move_applicable']
|
||||||
if move_applicable:
|
if move_applicable:
|
||||||
return
|
return
|
||||||
destination_page_id = request.POST.dict()['chooser']
|
destination = self.cleaned_form.cleaned_data['chooser']
|
||||||
destination = get_object_or_404(Page, id=destination_page_id)
|
|
||||||
pages_without_destination_access = []
|
pages_without_destination_access = []
|
||||||
pages_with_duplicate_slugs = []
|
pages_with_duplicate_slugs = []
|
||||||
for page in pages:
|
for page in pages:
|
||||||
@ -72,6 +71,8 @@ class MoveBulkAction(PageBulkAction):
|
|||||||
if not Page._slug_is_available(page.slug, destination, page=page):
|
if not Page._slug_is_available(page.slug, destination, page=page):
|
||||||
pages_with_duplicate_slugs.append(page)
|
pages_with_duplicate_slugs.append(page)
|
||||||
if pages_without_destination_access or pages_with_duplicate_slugs:
|
if pages_without_destination_access or pages_with_duplicate_slugs:
|
||||||
|
# this will be picked up by the form
|
||||||
|
self.destination = destination
|
||||||
return TemplateResponse(request, self.template_name, {
|
return TemplateResponse(request, self.template_name, {
|
||||||
'pages_without_destination_access': [
|
'pages_without_destination_access': [
|
||||||
{'page': page, 'can_edit': page.permissions_for_user(self.request.user).can_edit()}
|
{'page': page, 'can_edit': page.permissions_for_user(self.request.user).can_edit()}
|
||||||
@ -82,12 +83,11 @@ class MoveBulkAction(PageBulkAction):
|
|||||||
for page in pages_with_duplicate_slugs
|
for page in pages_with_duplicate_slugs
|
||||||
],
|
],
|
||||||
'destination': destination,
|
'destination': destination,
|
||||||
**self.get_context_data(destination=destination)
|
**self.get_context_data()
|
||||||
})
|
})
|
||||||
|
|
||||||
def execute_action(cls, pages):
|
def execute_action(cls, pages):
|
||||||
destination_page_id = cls.request.POST.dict().pop("chooser")
|
destination = cls.cleaned_form.cleaned_data['chooser']
|
||||||
destination = get_object_or_404(Page, id=destination_page_id)
|
|
||||||
|
|
||||||
for page in pages:
|
for page in pages:
|
||||||
if not page.permissions_for_user(cls.request.user).can_move_to(destination):
|
if not page.permissions_for_user(cls.request.user).can_move_to(destination):
|
||||||
@ -97,9 +97,6 @@ class MoveBulkAction(PageBulkAction):
|
|||||||
page.move(destination, pos='last-child', user=cls.request.user)
|
page.move(destination, pos='last-child', user=cls.request.user)
|
||||||
cls.num_parent_objects += 1
|
cls.num_parent_objects += 1
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
return super().post(request)
|
|
||||||
|
|
||||||
|
|
||||||
@hooks.register('register_page_bulk_action')
|
@hooks.register('register_page_bulk_action')
|
||||||
def move(request):
|
def move(request):
|
||||||
|
@ -26,12 +26,13 @@ class PublishBulkAction(PageBulkAction):
|
|||||||
return context
|
return context
|
||||||
|
|
||||||
def execute_action(cls, pages):
|
def execute_action(cls, pages):
|
||||||
|
include_descendants = cls.cleaned_form.cleaned_data['include_descendants']
|
||||||
for page in pages:
|
for page in pages:
|
||||||
revision = page.save_revision(user=cls.request.user)
|
revision = page.save_revision(user=cls.request.user)
|
||||||
revision.publish(user=cls.request.user)
|
revision.publish(user=cls.request.user)
|
||||||
cls.num_parent_objects += 1
|
cls.num_parent_objects += 1
|
||||||
|
|
||||||
if cls.include_descendants:
|
if include_descendants:
|
||||||
for draft_descendant_page in page.get_descendants().not_live().defer_streamfields().specific():
|
for draft_descendant_page in page.get_descendants().not_live().defer_streamfields().specific():
|
||||||
if draft_descendant_page.permissions_for_user(cls.request.user).can_publish():
|
if draft_descendant_page.permissions_for_user(cls.request.user).can_publish():
|
||||||
revision = draft_descendant_page.save_revision(user=cls.request.user)
|
revision = draft_descendant_page.save_revision(user=cls.request.user)
|
||||||
@ -39,8 +40,9 @@ class PublishBulkAction(PageBulkAction):
|
|||||||
cls.num_child_objects += 1
|
cls.num_child_objects += 1
|
||||||
|
|
||||||
def get_success_message(self):
|
def get_success_message(self):
|
||||||
|
include_descendants = self.cleaned_form.cleaned_data['include_descendants']
|
||||||
if self.num_parent_objects == 1:
|
if self.num_parent_objects == 1:
|
||||||
if self.include_descendants:
|
if include_descendants:
|
||||||
if self.num_child_objects == 0:
|
if self.num_child_objects == 0:
|
||||||
success_message = _("1 page has been published")
|
success_message = _("1 page has been published")
|
||||||
else:
|
else:
|
||||||
@ -54,7 +56,7 @@ class PublishBulkAction(PageBulkAction):
|
|||||||
else:
|
else:
|
||||||
success_message = _("1 page has been published")
|
success_message = _("1 page has been published")
|
||||||
else:
|
else:
|
||||||
if self.include_descendants:
|
if include_descendants:
|
||||||
if self.num_child_objects == 0:
|
if self.num_child_objects == 0:
|
||||||
success_message = _("%(num_parent_objects)d pages have been published") % {'num_parent_objects': self.num_parent_objects}
|
success_message = _("%(num_parent_objects)d pages have been published") % {'num_parent_objects': self.num_parent_objects}
|
||||||
else:
|
else:
|
||||||
|
@ -27,19 +27,21 @@ class UnpublishBulkAction(PageBulkAction):
|
|||||||
return context
|
return context
|
||||||
|
|
||||||
def execute_action(cls, pages):
|
def execute_action(cls, pages):
|
||||||
|
include_descendants = cls.cleaned_form.cleaned_data['include_descendants']
|
||||||
for page in pages:
|
for page in pages:
|
||||||
page.unpublish(user=cls.request.user)
|
page.unpublish(user=cls.request.user)
|
||||||
cls.num_parent_objects += 1
|
cls.num_parent_objects += 1
|
||||||
|
|
||||||
if cls.include_descendants:
|
if include_descendants:
|
||||||
for live_descendant_page in page.get_descendants().live().defer_streamfields().specific():
|
for live_descendant_page in page.get_descendants().live().defer_streamfields().specific():
|
||||||
if cls.check_perm(live_descendant_page):
|
if cls.check_perm(live_descendant_page):
|
||||||
live_descendant_page.unpublish()
|
live_descendant_page.unpublish()
|
||||||
cls.num_child_objects += 1
|
cls.num_child_objects += 1
|
||||||
|
|
||||||
def get_success_message(self):
|
def get_success_message(self):
|
||||||
|
include_descendants = self.cleaned_form.cleaned_data['include_descendants']
|
||||||
if self.num_parent_objects == 1:
|
if self.num_parent_objects == 1:
|
||||||
if self.include_descendants:
|
if include_descendants:
|
||||||
if self.num_child_objects == 0:
|
if self.num_child_objects == 0:
|
||||||
success_message = _("1 page has been unpublished")
|
success_message = _("1 page has been unpublished")
|
||||||
else:
|
else:
|
||||||
@ -53,7 +55,7 @@ class UnpublishBulkAction(PageBulkAction):
|
|||||||
else:
|
else:
|
||||||
success_message = _("1 page has been unpublished")
|
success_message = _("1 page has been unpublished")
|
||||||
else:
|
else:
|
||||||
if self.include_descendants:
|
if include_descendants:
|
||||||
if self.num_child_objects == 0:
|
if self.num_child_objects == 0:
|
||||||
success_message = _("%(num_parent_objects)d pages have been unpublished") % {'num_parent_objects': self.num_parent_objects}
|
success_message = _("%(num_parent_objects)d pages have been unpublished") % {'num_parent_objects': self.num_parent_objects}
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user