首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找摇尾模型管理PermissionHelper示例

查找摇尾模型管理PermissionHelper示例
EN

Stack Overflow用户
提问于 2017-01-06 00:16:42
回答 2查看 1K关注 0票数 1

在"wagtail_hooks.py“中,我有下面的代码。作为摇尾管理员,我可以看到StudentModelAdmin,但作为一个访问管理界面受限的用户,我不能。

我希望允许用户使用摇尾管理权限和下面的特定权限访问学生模型管理。如何创建"CourseRegisterPermission“类?

代码语言:javascript
复制
from wagtail.contrib.modeladmin.options import (ModelAdmin, modeladmin_register)
from wagtail.wagtailcore import hooks
from .models import Participant

@hooks.register('register_permissions')
def view_course_registrations():
    return Permission.objects.filter(codename="view_course_registrations")


class CourseRegisterPermission(PermissionHelper):
    # how do I allow users with the permission to view course registrations 
    # to see the 'StudentModelAdmin" below?


class StudentModelAdmin(ModelAdmin):
    model = Participant
    menu_label = "Student Registrations"
    menu_icon = "group"
    search_fields = ('name', 'supervisor_name')
    list_display = ('name', 'email')
    list_filter = ('course',)
    permission_helper_class = CourseRegisterPermission

我试图找到一些摇尾PermissionHelper的例子,但没有找到任何例子。

任何提示都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-06 15:53:43

您可以使用来自Wagtail的源的wagtail.contrib.modeladmin.helpers.PermissionHelperwagtail.contrib.modeladmin.helpers.PagePermissionHelper权限助手类作为示例。参见user_can_listuser_can_create等方法。

但是..。确实需要定义自己的权限助手类吗?在我看来,您只需在Wagtail管理中创建一个新的(或编辑现有的)组,并将所需的对象权限授予您的Participant模型。

在我的截图中,Programme是我使用ModelAdmin管理的模型。

票数 3
EN

Stack Overflow用户

发布于 2022-11-06 18:14:27

您可以覆盖CourseRegisterPermission中的一些函数

代码语言:javascript
复制
class CourseRegisterPermission(PermissionHelper):

    def user_can_list(self, user):
        """
        Return a boolean to indicate whether `user` is permitted to access the
        list view for self.model
        """
        # this is just an example
        return user.role == "driver" 



    def user_can_delete_obj(self, user, obj):
        """
        Return a boolean to indicate whether `user` is permitted to 'delete'
        a specific `self.model` instance.
        """
        perm_codename = self.get_perm_codename('delete')

        if obj.status > 0:
            return False

        if not self.user_has_specific_permission(user, perm_codename):
            return False

        if user.id == obj.id:
            # users may not delete themselves
            return False

您还可以覆盖以下函数:

  • def user_can_list(self, user):
  • def user_can_create(self, user):
  • def user_can_inspect_obj(self, user, obj):
  • def user_can_edit_obj(self, user, obj):
  • def user_can_delete_obj(self, user, obj):
  • def user_can_unpublish_obj(self, user, obj):
  • def user_can_copy_obj(self, user, obj):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41496976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档