从权限名称列表中添加权限

时间:2014-12-23 16:44:04

标签: python django

我找到了一个解决方案,用于将'app_label.permission_codename'格式的权限名称列表添加到组(或用户,这不重要),这样做的最佳方法是什么?现在我发布我的回答这个有效的问题,但我想听听你的解决方案,如果有内置的方法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

现在我遇到的最佳解决方案是:

from itertools import izip
from django.contrib.auth.models import Permission, Group

def pairwise(iterable):
    "s -> (s0,s1), (s2,s3), (s4, s5), ..."
    a = iter(iterable)
    return izip(a, a)

 def get_permissions(permlist):
        pm = [{'codename':b, 'content_type__app_label': a}  for p in permlist for a, b in pairwise(p.split('.'))]
        return [Permission.objects.get(**p) for p in pm]

group = Group.objects.get(name='groupname')
group.permissions = get_permissions([
    'app1.perm_codename1',
    'app2.perm_codename2',
    'app3.perm_codename3',
    'app4.perm_codename4'])