Для наложения доступа в меню мы можем создать собственный класс MenuItem
и переопределить метод is_shown
, как показано ниже:
class CustomAdminMenuItem(MenuItem):
def is_shown(self, request):
return request.user.is_staff
Теперь используйте этот CustomAdminMenuItem
вместо MenuItem, например:
from wagtail.core import hooks
from wagtail.admin.menu import MenuItem
@hooks.register('register_admin_menu_item')
def register_custom_admin_menu_item():
return CustomAdminMenuItem(_('Site Admin'), reverse('admin_menu'), classnames='icon icon-folder-inverse',
order=20000)
Вы можете реализовать пользовательскую проверку разрешений, также используя has_perm
внутри is_shown, например:
class CustomMenuItem(MenuItem):
def is_shown(self, request):
return (
request.user.has_perm('wagtailsearchpromotions.add_searchpromotion') or
request.user.has_perm('wagtailsearchpromotions.change_searchpromotion') or
request.user.has_perm('wagtailsearchpromotions.delete_searchpromotion')
)
Для получения более подробной информации посетите исходный код здесь и doc здесь .