我有一个具有模型层次结构的应用程序,其中我需要底层对象具有与父对象相同的权限(不仅是它们的定义/代号,还有每个用户和每个组的权限)。
Django-guardian 似乎只有允许检查特定用户/组权限的功能。
是否有任何规范的方法可以将所有权限从一个对象克隆到另一个对象或强制继承?
我有一个具有模型层次结构的应用程序,其中我需要底层对象具有与父对象相同的权限(不仅是它们的定义/代号,还有每个用户和每个组的权限)。
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)