【问题标题】:Wagtail Hide/Show menu item by user permissionsWagtail 按用户权限隐藏/显示菜单项
【发布时间】:2018-05-20 11:12:48
【问题描述】:

如何在 wagtail CMS 中隐藏显示菜单: 这是我在 blog/wagtail_hooks.py 内的 register_admin_menu_item 钩子上的代码

    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)

【问题讨论】:

    标签: wagtail wagtail-snippet


    【解决方案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)
    

    您也可以在 is_shown 中使用has_perm 来实现自定义权限检查,例如:

        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')
                )
    

    更多详情请访问源代码here和文档here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      相关资源
      最近更新 更多