Skip to content
Snippets Groups Projects
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)