summaryrefslogtreecommitdiff
path: root/scripts/2017-03-29-missing-rights.py
blob: 81a9b86ee347a393d4fb8f32544a3333dab85979 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.contrib.auth.models import Group, Permission

for group in Group.objects.all():
    if ':' not in group.name or u"rattaché" in group.name:
        continue
    permissions = []
    for perm in group.permissions.all():
        codenames = perm.codename.split('_')
        own_codename = codenames[0] + "_own_" + '_'.join(codenames[1:])
        if Permission.objects.filter(codename=own_codename).count():
            permissions.append(Permission.objects.get(codename=own_codename))
    if not permissions:
        print(u'No permission: ' + group.name)
        continue
    names = group.name.split(':')
    if Group.objects.filter(name__startswith=names[0] + u"rattaché",
                            name__endswith=names[1]).count():
        print(u'Already here: ' + group.name)
        continue
    name = names[0] + u"rattachés " + u":" + names[1]
    new_group = Group.objects.create(name=name)
    for perm in permissions:
        new_group.permissions.add(perm)
    print(u'New: ' + group.name)