grandlyon: add CUT agents synchronisation script
This commit is contained in:
parent
1563a4ba15
commit
0239b89898
|
@ -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'])
|
Loading…
Reference in New Issue