【问题标题】:Clone all object permissions in django-guardian / inherit from ForeignKey克隆 django-guardian 中的所有对象权限/从 ForeignKey 继承
【发布时间】:2018-07-20 12:21:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-guardian


    【解决方案1】:

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

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

    或显式复制权限。由于这种情况一次又一次地出现,我为此目的创建了一个函数:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-26
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2014-06-21
      • 2011-06-07
      相关资源
      最近更新 更多