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)