From 64cdeff9bb1e69930e342e714e2cb8bb432ddfee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 11 Aug 2017 17:47:23 +0200 Subject: [PATCH] authentic: add draft script to export users --- authentic/export-users.py | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 authentic/export-users.py diff --git a/authentic/export-users.py b/authentic/export-users.py new file mode 100644 index 0000000..f6f618f --- /dev/null +++ b/authentic/export-users.py @@ -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)