From 2dee6c93da0534d849a8a467949b5f5709247097 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sun, 29 Mar 2020 21:47:17 +0100
Subject: [PATCH] Use cached attrs for user loading

---
 aleksis/apps/ldap/util/ldap_sync.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py
index 5bbbd77..5bced2e 100644
--- a/aleksis/apps/ldap/util/ldap_sync.py
+++ b/aleksis/apps/ldap/util/ldap_sync.py
@@ -135,7 +135,7 @@ def ldap_sync_user_on_login(sender, instance, created, **kwargs):
 
 
 @transaction.atomic
-def ldap_sync_from_user(user):
+def ldap_sync_from_user(user, attrs):
     """ Synchronise person information from a User object (with ldap_user) to Django """
 
     Person = apps.get_model("core", "Person")
@@ -174,8 +174,8 @@ def ldap_sync_from_user(user):
 
         # Try sync if constance setting for this field is non-empty
         ldap_field = getattr(config, setting_name, "").lower()
-        if ldap_field and ldap_field in user.ldap_user.attrs.data:
-            value = user.ldap_user.attrs.data[ldap_field][0]
+        if ldap_field and ldap_field in attrs:
+            value = attrs[ldap_field][0]
 
             # Apply regex replace from config
             patterns = getattr(config, setting_name + "_RE", "")
@@ -282,10 +282,9 @@ def mass_ldap_import():
 
         # Find out whether the User object would be created, but do not save
         user, created = backend.get_or_build_user(uid, ldap_user)
-        user.ldap_user = ldap_user
 
         if created or config.LDAP_SYNC_ON_UPDATE:
             logger.info("Will %s user %s in Django" % ("create" if created else "update", uid))
-            person = ldap_sync_from_user(user)
+            person = ldap_sync_from_user(user, attrs)
 
         logger.info("Successfully imported user %s" % uid)
-- 
GitLab