|
@@ -34,55 +34,50 @@ class UnpublishBulkAction(PageBulkAction):
|
|
|
}
|
|
|
|
|
|
@classmethod
|
|
|
- def execute_action(cls, objects, **kwargs):
|
|
|
- include_descendants = kwargs.get('include_descendants', False)
|
|
|
- user = kwargs.get('user', None)
|
|
|
- if user is None:
|
|
|
- return
|
|
|
- permission_checker = kwargs.get('permission_checker', None)
|
|
|
- if permission_checker is None:
|
|
|
- return
|
|
|
+ def execute_action(cls, objects, include_descendants=False, user=None, permission_checker=None, **kwargs):
|
|
|
+ num_parent_objects, num_child_objects = 0, 0
|
|
|
for page in objects:
|
|
|
page.unpublish(user=user)
|
|
|
- cls.num_parent_objects += 1
|
|
|
+ num_parent_objects += 1
|
|
|
|
|
|
if include_descendants:
|
|
|
for live_descendant_page in page.get_descendants().live().defer_streamfields().specific():
|
|
|
- if permission_checker(live_descendant_page):
|
|
|
+ if user is None or permission_checker(live_descendant_page):
|
|
|
live_descendant_page.unpublish()
|
|
|
- cls.num_child_objects += 1
|
|
|
+ num_child_objects += 1
|
|
|
+ return num_parent_objects, num_child_objects
|
|
|
|
|
|
- def get_success_message(self):
|
|
|
+ def get_success_message(self, num_parent_objects, num_child_objects):
|
|
|
include_descendants = self.cleaned_form.cleaned_data['include_descendants']
|
|
|
- if self.num_parent_objects == 1:
|
|
|
+ if num_parent_objects == 1:
|
|
|
if include_descendants:
|
|
|
- if self.num_child_objects == 0:
|
|
|
+ if num_child_objects == 0:
|
|
|
success_message = _("1 page has been unpublished")
|
|
|
else:
|
|
|
success_message = ngettext(
|
|
|
"1 page and %(num_child_objects)d child page have been unpublished",
|
|
|
"1 page and %(num_child_objects)d child pages have been unpublished",
|
|
|
- self.num_child_objects
|
|
|
+ num_child_objects
|
|
|
) % {
|
|
|
- 'num_child_objects': self.num_child_objects
|
|
|
+ 'num_child_objects': num_child_objects
|
|
|
}
|
|
|
else:
|
|
|
success_message = _("1 page has been unpublished")
|
|
|
else:
|
|
|
if include_descendants:
|
|
|
- if self.num_child_objects == 0:
|
|
|
- success_message = _("%(num_parent_objects)d pages have been unpublished") % {'num_parent_objects': self.num_parent_objects}
|
|
|
+ if num_child_objects == 0:
|
|
|
+ success_message = _("%(num_parent_objects)d pages have been unpublished") % {'num_parent_objects': num_parent_objects}
|
|
|
else:
|
|
|
success_message = ngettext(
|
|
|
"%(num_parent_objects)d pages and %(num_child_objects)d child page have been unpublished",
|
|
|
"%(num_parent_objects)d pages and %(num_child_objects)d child pages have been unpublished",
|
|
|
- self.num_child_objects
|
|
|
+ num_child_objects
|
|
|
) % {
|
|
|
- 'num_child_objects': self.num_child_objects,
|
|
|
- 'num_parent_objects': self.num_parent_objects
|
|
|
+ 'num_child_objects': num_child_objects,
|
|
|
+ 'num_parent_objects': num_parent_objects
|
|
|
}
|
|
|
else:
|
|
|
- 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': num_parent_objects}
|
|
|
return success_message
|
|
|
|
|
|
|