Wagtail Hide/Show пункт меню по разрешениям пользователя
Как скрыть-показать меню в CMS трясогузки: вот мой код внутри ловушки register_admin_menu_item blog/wagtail_hooks.py
from wagtail.core import hooks
from wagtail.admin.menu import MenuItem
@hooks.register('register_admin_menu_item')
def register_custom_admin_menu_item():
return MenuItem(_('Site Admin'), reverse('admin_menu'), classnames='icon icon-folder-inverse',
order=20000)
1 ответ
Для наложения доступа в меню мы можем создать кастом 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')
)
Для более подробной информации посетите исходный код здесь и документируйте здесь.