46 lines
1.3 KiB
Python
46 lines
1.3 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.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 _snippets_in_index_view(self):
|
|
return snippet_views.get_snippet_models_for_index_view()
|
|
|
|
def is_shown(self, request):
|
|
return user_can_access_snippets(request.user, self._snippets_in_index_view)
|
|
|
|
|
|
@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)
|