From cee7002099e90589a57046c01fd82d1f08b0d810 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Fri, 27 Mar 2020 23:08:48 +0000 Subject: [PATCH] Move field detection to function --- aleksis/apps/ldap/util/ldap_sync.py | 32 ++++++++++++++++------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py index be0239e..0563239 100644 --- a/aleksis/apps/ldap/util/ldap_sync.py +++ b/aleksis/apps/ldap/util/ldap_sync.py @@ -11,6 +11,12 @@ def setting_name_from_field(model, field): return "LDAP_ADDITIONAL_FIELD_%s_%s" % (model._meta.label, field.name) +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] + + def update_constance_config_fields(): """ Auto-generate sync field settings from models """ @@ -18,13 +24,12 @@ def update_constance_config_fields(): for model in (Person,): # Collect fields that are matchable setting_names = [] - for field in model._meta.fields: - if field.editable and not field.auto_created: - setting_name = setting_name_from_field(model, field) - setting_desc = field.verbose_name + for field in syncable_fields(model): + setting_name = setting_name_from_field(model, field) + setting_desc = field.verbose_name - settings.CONSTANCE_CONFIG[setting_name] = ("", setting_desc, str) - setting_names.append(setting_name) + settings.CONSTANCE_CONFIG[setting_name] = ("", setting_desc, str) + setting_names.append(setting_name) # Add separate constance section if settings were generated if setting_names: @@ -58,14 +63,13 @@ def ldap_sync_from_user(sender, instance, created, raw, using, update_fields, ** person.user = instance # Synchronise additional fields if enabled - for field in Person._meta.fields: - if field.editable and not field.auto_created: - 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]) + 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]) person.save() -- GitLab