authentic: add draft script to export users

This commit is contained in:
Frédéric Péters 2017-08-11 17:47:23 +02:00
parent 994b100dfa
commit 64cdeff9bb
1 changed files with 45 additions and 0 deletions

45
authentic/export-users.py Normal file
View File

@ -0,0 +1,45 @@
import json
from django.contrib.auth import get_user_model
from django_rbac.utils import get_role_model, get_ou_model
from authentic2.models import AttributeValue
User = get_user_model()
Role = get_role_model()
Ou = get_ou_model()
export = {'users': []}
def role_to_json(role, attributes=True):
# to put in Role::to_json() (at least in parts)
role_dict = role.to_json()
if role.service_id:
role_dict['service_slug'] = role.service.slug
return role_dict
def to_json(user):
user_dict = {
'uuid': user.uuid,
'username': user.username,
'email': user.email,
'ou': user.ou.name if user.ou else None,
'ou__uuid': user.ou.uuid if user.ou else None,
'ou__slug': user.ou.slug if user.ou else None,
'ou__name': user.ou.name if user.ou else None,
'first_name': user.first_name,
'last_name': user.last_name,
'is_superuser': user.is_superuser,
'password': user.password,
'roles': [role_to_json(role) for role in user.roles.all()],
'attributes': {}
}
for av in AttributeValue.objects.with_owner(user):
user_dict['attributes'][str(av.attribute.name)] = av.to_python()
return user_dict
for user in User.objects.all():
user_dict = to_json(user)
export['users'].append(user_dict)
print json.dumps(export, indent=2)