From 1fed8f2e4fcd3b2a08d2cf851ff7bb5f0707a8a0 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Fri, 13 Nov 2020 17:49:41 +0100 Subject: [PATCH] Ignore missing LDAP fields on match --- aleksis/apps/ldap/util/ldap_sync.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py index 381794e..19933d9 100644 --- a/aleksis/apps/ldap/util/ldap_sync.py +++ b/aleksis/apps/ldap/util/ldap_sync.py @@ -238,7 +238,12 @@ def ldap_sync_from_user(user, dn, attrs): # Match on all fields selected in preferences fields_map = {f.name: f for f in Person.syncable_fields()} for field_name in get_site_preferences()["ldap__matching_fields"]: - value = get_ldap_value_for_field(Person, fields_map[field_name], attrs, dn) + try: + value = get_ldap_value_for_field(Person, fields_map[field_name], attrs, dn) + except KeyError: + # Field is not set in LDAP, match on remaining fields + continue + matches[field_name] = value # Pre-fill all mandatory non-matching fields from User object for missing_key in ("first_name", "last_name", "email"): -- GitLab