克隆 django-guardian 中的所有对象权限/继承自 ForeignKey
Clone all object permissions in django-guardian / inherit from ForeignKey
我有一个具有模型层次结构的应用程序,其中我需要底层对象具有与父对象相同的权限(不仅是它们的 definitions/codenames,还包括每个用户和每个组的权限)。
Django-guardian 似乎只有允许检查特定 user/group 权限的功能。
是否有任何规范的方法可以将所有权限从一个对象克隆到另一个对象或强制继承?
无法强制继承权限,也没有复制权限的内置函数。
在您的情况下,您可以简单地检查父对象的权限吗?
或显式复制权限。由于这个问题一次又一次地出现,我为此做了一个函数:
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)
我有一个具有模型层次结构的应用程序,其中我需要底层对象具有与父对象相同的权限(不仅是它们的 definitions/codenames,还包括每个用户和每个组的权限)。
Django-guardian 似乎只有允许检查特定 user/group 权限的功能。
是否有任何规范的方法可以将所有权限从一个对象克隆到另一个对象或强制继承?
无法强制继承权限,也没有复制权限的内置函数。
在您的情况下,您可以简单地检查父对象的权限吗?
或显式复制权限。由于这个问题一次又一次地出现,我为此做了一个函数:
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)