繁体   English   中英

克隆 django-guardian 中的所有对象权限/从 ForeignKey 继承

[英]Clone all object permissions in django-guardian / inherit from ForeignKey

我有一个具有模型层次结构的应用程序,其中我需要底层对象与父对象具有相同的权限(不仅是它们的定义/代号,还有每个用户和每个组的权限)。

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

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

没有办法强制权限继承,也没有复制权限的内置函数。

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

或者显式复制权限。 由于这一次又一次地出现,我为此目的使自己成为一个函数:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM