Skip to content
Snippets Groups Projects
Commit 23b2218f authored by OndraRehounek's avatar OndraRehounek
Browse files

district and region: Page chooser hook filtering parents only - concept version

parent 0f6515de
No related branches found
No related tags found
2 merge requests!435Release upgrades,!430Feature/majak misc enhancements
Pipeline #7144 passed
import re
from wagtail.core import hooks
# FIXME hooks are loaded globally so it doesn't make sense to have it in this module
@hooks.register("construct_page_chooser_queryset")
def this_web_only(pages, request):
add_result = re.search(
"page/(.*)/", request.META.get("HTTP_REFERER")
) # FIXME better regex
edit_result = re.search("pages/(.*)/edit", request.META.get("HTTP_REFERER"))
if add_result:
return handle_add_page_selection(pages=pages, add_result=add_result)
if edit_result:
return handle_edit_page_selection(pages=pages, edit_result=edit_result)
return pages
def handle_add_page_selection(pages, add_result):
parent_page_id = add_result.group(1)
if parent_page_id == 1: # pro novou homepage žádné podstránky nejsou
return pages.none()
parent_page = pages.model.objects.get(id=parent_page_id)
root_page = getattr(parent_page.specific, "root_page", None)
return get_only_root_page_descendants(pages=pages, root_page=root_page)
def handle_edit_page_selection(pages, edit_result):
current_page_id = edit_result.group(1)
current_page = pages.model.objects.get(id=current_page_id)
root_page = getattr(current_page.specific, "root_page", None)
return get_only_root_page_descendants(pages=pages, root_page=root_page)
def get_only_root_page_descendants(pages, root_page):
if not root_page:
return pages
web_pages_id_list = root_page.get_descendants().live().values_list("id", flat=True)
return pages.filter(id__in=web_pages_id_list)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment