grandlyon: add CUT agents synchronisation script

This commit is contained in:
Frédéric Péters 2017-10-22 10:26:37 +02:00
parent 1563a4ba15
commit 0239b89898
1 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,44 @@
#! /usr/bin/env python
import requests
import sys
from django.conf import settings
from django.contrib.auth import get_user_model
from authentic2.a2_rbac.models import OrganizationalUnit
from authentic2.a2_rbac.utils import get_default_ou
from authentic2_auth_oidc.models import OIDCProvider, OIDCAccount
ou_mapping = {
'gl-guichet-numerique': get_default_ou(),
#'bron': OrganizationalUnit.objects.get(slug='hobo-bron'),
#'dardilly': OrganizationalUnit.objects.get(slug='hobo-dardilly'),
#'oullins': OrganizationalUnit.objects.get(slug='hobo-oullins'),
#'vaulx-en-velin': OrganizationalUnit.objects.get(slug='hobo-vaulx-en-velin'),
#'villeurbanne': OrganizationalUnit.objects.get(slug='hobo-villeurbanne'),
}
cut_agents = OIDCProvider.objects.get(name='cut-agents')
User = get_user_model()
for ou_slug, ou in ou_mapping.items():
url = 'https://moncompte-rec.grandlyon.com/api/users/?ou__slug=%s' % ou_slug
for cut_user_data in requests.get(url, auth=settings.CUT_API_CREDENTIALS).json()['results']:
try:
user = User.objects.get(oidc_account__provider=cut_agents,
oidc_account__sub=cut_user_data['sub'],
is_active=True)
continue
except User.DoesNotExist:
pass
try:
user = User.objects.get(email=cut_user_data['email'])
except User.DoesNotExist:
user = User(first_name=cut_user_data['first_name'],
last_name=cut_user_data['last_name'],
email=cut_user_data['email'],
ou=ou)
user.save()
OIDCAccount.objects.create(provider=cut_agents, user=user, sub=cut_user_data['sub'])