wagtail_hooks.py 2.20 KiB
from django.contrib.messages import ERROR, SUCCESS, WARNING, add_message
from wagtail.admin import messages
from wagtail.core import hooks
from .models import DistrictArticlesPage
@hooks.register("after_edit_page")
@hooks.register("after_edit_page")
def handle_page_import(request, page): # def after_create_page(request, page):
"""Block awesome page deletion and show a message."""
if request.method == "POST" and page.specific_class in [DistrictArticlesPage]:
for message in getattr(page, "import_message_list", []):
add_message(request, message["level"], message["text"])
# 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)