sync-cut: skip errors, display in verbose mode
This commit is contained in:
parent
a917556ff5
commit
674354c12c
|
@ -17,6 +17,7 @@
|
|||
import requests
|
||||
import sys
|
||||
|
||||
import django.db
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.management.base import BaseCommand
|
||||
|
@ -31,6 +32,8 @@ class Command(BaseCommand):
|
|||
User = get_user_model()
|
||||
OU = get_ou_model()
|
||||
|
||||
verbose = int(options['verbosity']) > 0
|
||||
|
||||
cut_agents = OIDCProvider.objects.get(name='cut-agents')
|
||||
|
||||
ou_mapping = settings.CUT_GNM_OU_MAPPING
|
||||
|
@ -47,12 +50,17 @@ class Command(BaseCommand):
|
|||
# fallback to getting the user from its (email, ou)
|
||||
try:
|
||||
user = User.objects.get(email=cut_user_data['email'], ou=ou_gnm)
|
||||
except User.MultipleObjectsReturned:
|
||||
if verbose:
|
||||
print 'bad duplicated email', cut_user_data['email']
|
||||
continue
|
||||
except User.DoesNotExist:
|
||||
# uuid?
|
||||
try:
|
||||
user = User.objects.get(uuid=cut_user_data['sub'])
|
||||
except User.DoesNotExist:
|
||||
# at last, create new user
|
||||
if verbose:
|
||||
print 'creating', cut_user_data['email']
|
||||
user = User()
|
||||
|
||||
|
@ -61,6 +69,8 @@ class Command(BaseCommand):
|
|||
user.email != cut_user_data['email'] or
|
||||
user.first_name != cut_user_data['first_name'] or
|
||||
user.last_name != cut_user_data['last_name']):
|
||||
if verbose:
|
||||
print 'updating', user.email, '->', ou_gnm
|
||||
# only touch user if there are changes
|
||||
user.uuid = cut_user_data['sub']
|
||||
user.ou = ou_gnm
|
||||
|
@ -69,4 +79,8 @@ class Command(BaseCommand):
|
|||
user.last_name = cut_user_data['last_name']
|
||||
user.save()
|
||||
|
||||
try:
|
||||
OIDCAccount.objects.get_or_create(provider=cut_agents, user=user, sub=cut_user_data['sub'])
|
||||
except django.db.utils.IntegrityError:
|
||||
if verbose:
|
||||
print 'oops duplicated email?', cut_user_data['email']
|
||||
|
|
Reference in New Issue