From 6e7cc93d116d84c0ea742076e8828f265f394da3 Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Thu, 19 Oct 2023 15:24:33 -0400 Subject: [PATCH] Include descendants when applying bulk actions to page search results --- .../pages/bulk_actions/page_bulk_action.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/wagtail/admin/views/pages/bulk_actions/page_bulk_action.py b/wagtail/admin/views/pages/bulk_actions/page_bulk_action.py index 5d83f04a29..0ab151646e 100644 --- a/wagtail/admin/views/pages/bulk_actions/page_bulk_action.py +++ b/wagtail/admin/views/pages/bulk_actions/page_bulk_action.py @@ -16,14 +16,22 @@ class PageBulkAction(BulkAction): def get_all_objects_in_listing_query(self, parent_id): listing_objects = self.model.objects.all() - if parent_id is not None: - listing_objects = listing_objects.get(id=parent_id).get_children() - - listing_objects = listing_objects.values_list("pk", flat=True) - + q = None if "q" in self.request.GET: q = self.request.GET.get("q", "") + if parent_id is not None: + listing_objects = listing_objects.get(id=parent_id) + # If we're searching, include the descendants as well. + # Otherwise, just include the direct children. + if q: + listing_objects = listing_objects.get_descendants() + else: + listing_objects = listing_objects.get_children() + + listing_objects = listing_objects.values_list("pk", flat=True) + + if q: listing_objects = page_filter_search(q, listing_objects)[0].results() return listing_objects