diff --git a/portal/listeners.py b/portal/listeners.py index 2e691f293d5407549e9ea3bfdc404e664981c44c..9ae6d7b6dd4b64f9935dd01d1680599dab916af9 100644 --- a/portal/listeners.py +++ b/portal/listeners.py @@ -3,10 +3,12 @@ from django.db.models.signals import post_save, post_delete from django.contrib.auth.signals import user_logged_in from django.dispatch import receiver from django_auth_ldap.backend import LDAPBackend, populate_user +from django.db import transaction from .models import Profile, Lab @receiver(user_logged_in) +@transaction.atomic def user_login(sender, user, **kwargs): """ User logged in (any method) Update user association with IRIC labs. External lab associations are to be managed manually. @@ -25,12 +27,10 @@ def user_login(sender, user, **kwargs): if hasattr(user, 'ldapuser') or azuread_groups: user.profile.labs.remove(*Lab.objects.filter(ldap__startswith='iric-')) - if hasattr(user, 'ldapuser'): user.profile.labs.add(*Lab.objects.filter(ldap__in=user.ldap_user.group_names)) elif azuread_groups: user.profile.labs.add(*Lab.objects.filter(ldap__in=azuread_groups)) - user.profile.save()