克隆Djangogardian/inherit from ForeignKey中的所有对象权限

2024-05-14 13:58:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有模型层次结构的应用程序,在该应用程序中,我需要底层对象具有与父对象相同的权限(不仅是它们的定义/代码名,还包括每个用户和每个组的权限)。你知道吗

Django guardian似乎只有允许检查特定用户/组权限的功能。你知道吗

是否有任何规范的方法将所有权限从一个对象克隆到另一个对象或强制继承?你知道吗


Tags: 对象django方法代码用户模型功能规范
1条回答
网友
1楼 · 发布于 2024-05-14 13:58:19

无法强制权限继承,也没有用于复制权限的内置函数。你知道吗

在您的情况下,您可以简单地对照父对象检查权限?你知道吗

或者显式复制权限。既然这个问题一再出现,我就为自己做了一个函数:

from guardian.shortcuts import get_users_with_perms, assign_perm, get_groups_with_perms


def copy_permissions(old_object, new_object):
    """Copy user and group permissions from one object to another."""
    for user, permissions in get_users_with_perms(old_object, attach_perms=True, with_group_users=False).items():
        for permission in permissions:
            assign_perm(permission, user, new_object)

    for group, permissions in get_groups_with_perms(old_object, attach_perms=True).items():
        for permission in permissions:
            assign_perm(permission, group, new_object)

相关问题 更多 >

    热门问题