Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/snippets/wagtail_hooks.py
2024-08-27 20:33:44 +02:00

51 lines
1.4 KiB
Python

from django.urls import include, path, reverse
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from wagtail import hooks
from wagtail.admin.menu import MenuItem
from wagtail.snippets.bulk_actions.delete import DeleteBulkAction
from wagtail.snippets.models import get_snippet_models
from wagtail.snippets.permissions import user_can_access_snippets
from wagtail.snippets.views import snippets as snippet_views
@hooks.register("register_admin_urls")
def register_admin_urls():
snippet_index_patterns = (
[
path("", snippet_views.ModelIndexView.as_view(), name="index"),
],
"wagtailsnippets",
)
return [
path("snippets/", include(snippet_index_patterns)),
]
class SnippetsMenuItem(MenuItem):
@cached_property
def _all_have_menu_items(self):
return all(
model.snippet_viewset.get_menu_item_is_registered()
for model in get_snippet_models()
)
def is_shown(self, request):
return not self._all_have_menu_items and user_can_access_snippets(request.user)
@hooks.register("register_admin_menu_item")
def register_snippets_menu_item():
return SnippetsMenuItem(
_("Snippets"),
reverse("wagtailsnippets:index"),
name="snippets",
icon_name="snippet",
order=500,
)
hooks.register("register_bulk_action", DeleteBulkAction)