From c797519f7ad4bf78e6a0ceb4d1640b0760c39939 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Fri, 27 Mar 2020 23:18:25 +0000
Subject: [PATCH] Fix typo and logic of additional field sync

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

diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py
index 0563239..936b1f0 100644
--- a/aleksis/apps/ldap/util/ldap_sync.py
+++ b/aleksis/apps/ldap/util/ldap_sync.py
@@ -14,7 +14,7 @@ def setting_name_from_field(model, field):
 def syncable_fields(model):
     """ Collect all fields that can be synced on a model """
 
-    return [field for field in models._meta.fields if field.editable and not field.auto_created]
+    return [field for field in model._meta.fields if field.editable and not field.auto_created]
 
 
 def update_constance_config_fields():
@@ -61,17 +61,16 @@ def ldap_sync_from_user(sender, instance, created, raw, using, update_fields, **
                 return
 
             person.user = instance
+            person.save()
 
-            # Synchronise additional fields if enabled
-            for field in syncable_fields(Person):
-                setting_name = setting_name_from_field(Person, field)
-
-                # Try sync if constance setting for this field is non-empty
-                ldap_field = getattr(config, setting_name, "")
-                if ldap_field and ldap_field in instance.ldap_user.attrs.data:
-                    setattr(person, field._meta.name, instance.ldap_user.attrs.data[ldap_field])
+        # Synchronise additional fields if enabled
+        for field in syncable_fields(Person):
+            setting_name = setting_name_from_field(Person, field)
 
-            person.save()
+            # Try sync if constance setting for this field is non-empty
+            ldap_field = getattr(config, setting_name, "")
+            if ldap_field and ldap_field in instance.ldap_user.attrs.data:
+                setattr(instance.person, field.name, instance.ldap_user.attrs.data[ldap_field][0])
 
         if config.ENABLE_LDAP_GROUP_SYNC:
             # Resolve Group objects from LDAP group objects
-- 
GitLab