summaryrefslogtreecommitdiffstats
path: root/grandlyon/scripts/copy-roles.py
blob: 45a6d40fe78410b0133040a6ee1298e2a71125a1 (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
25
26
27
28
29
30
31
32
33
34
35
36
37
import os
import json
import sys

from django_rbac.utils import get_role_model, get_ou_model

Ou = get_ou_model()
Role = get_role_model()

mapping = {}

name_src = sys.argv[1].decode('utf-8')
name_dst = sys.argv[2].decode('utf-8')

ou_src = Ou.objects.get(name=name_src)
ou = Ou.objects.get(name=name_dst)

agent_role = None

for role in Role.objects.filter(ou=ou_src):
    #if not (role.name.startswith('Gestionnaire') or role.name.startswith('Administrateur')):
    #    continue
    if role.slug.startswith('_'):
        continue
    new_name = role.name.replace(name_src, name_dst).replace(name_src.lower(), name_dst.lower())
    new_role, created = Role.objects.get_or_create(ou=ou, name=new_name)
    mapping[role.uuid] = {name_dst: new_role.uuid}
    if new_name == 'Agent':
        agent_role = new_role

if agent_role:
    for role in Role.objects.filter(ou=ou):
        if ou.uuid == agent_role.uuid:
            continue
        role.add_parent(agent_role)

json.dump(mapping, open('/tmp/roles.mapping.json', 'w'), indent=2)