doublons-cd91: ensure no duplicates in users or roles
This commit is contained in:
parent
aeba142aeb
commit
333a3e617b
|
@ -29,8 +29,10 @@ if hasattr(connection, 'tenant') and hasattr(connection.tenant, 'domain_url'):
|
|||
logger.info('=== Starting fusion at %s ===', timezone.now().strftime('%Y-%m-%dT%H:%M:%S'))
|
||||
|
||||
|
||||
agent_users = User.objects.filter(email__icontains='@cd-essonne.fr', saml_identifiers__isnull=False).order_by(
|
||||
'-last_login', 'first_name'
|
||||
agent_users = (
|
||||
User.objects.filter(email__icontains='@cd-essonne.fr', saml_identifiers__isnull=False)
|
||||
.distinct()
|
||||
.order_by('-last_login', 'first_name')
|
||||
)
|
||||
|
||||
agent_users_by_email = collections.defaultdict(list)
|
||||
|
@ -42,9 +44,10 @@ for email, users in agent_users_by_email.items():
|
|||
if len(users) == 1:
|
||||
continue
|
||||
|
||||
roles = set()
|
||||
roles = {}
|
||||
for user in users:
|
||||
roles.update(user.roles.all())
|
||||
for role in user.roles.all():
|
||||
roles[role.id] = role
|
||||
|
||||
user_to_keep, users_to_disable = users[0], users[1:]
|
||||
|
||||
|
@ -62,7 +65,7 @@ def do_fusion(users):
|
|||
for user in users:
|
||||
logger.info('* Processing user %s', get_user_detail(user))
|
||||
|
||||
for role in sorted(user._roles_to_add, key=lambda x: x.name.lower()):
|
||||
for role in sorted(user._roles_to_add.values(), key=lambda x: x.name.lower()):
|
||||
logger.info('Adding role %s', role)
|
||||
user.roles.add(role)
|
||||
|
||||
|
|
Loading…
Reference in New Issue