diff --git a/aleksis/apps/ldap/model_extensions.py b/aleksis/apps/ldap/model_extensions.py deleted file mode 100644 index 13db35ef0ffecb0e9ebb8884c7b574befc6dcfcb..0000000000000000000000000000000000000000 --- a/aleksis/apps/ldap/model_extensions.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.utils.translation import gettext_lazy as _ - -from jsonstore import CharField - -from aleksis.core.models import Group, Person - -# Fields as import refs for LDAP objects -Group.field(ldap_dn=CharField(verbose_name=_("LDAP Distinguished Name"), blank=True)) -Person.field(ldap_dn=CharField(verbose_name=_("LDAP Distinguished Name"), blank=True)) diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py index b33a030d0f17e41c2df8350a6a61cbf4d94974f4..61070865c840dec6697635ec0ce03b68819fedad 100644 --- a/aleksis/apps/ldap/util/ldap_sync.py +++ b/aleksis/apps/ldap/util/ldap_sync.py @@ -294,7 +294,7 @@ def ldap_sync_from_user(user, dn, attrs): status = "New" if created else "Existing" logger.info(f"{status} person {person} linked to user {user.username}") - person.ldap_dn = dn.lower() + person.extended_data["ldap_dn"] = dn.lower() if not created: person.first_name = user.first_name person.last_name = user.last_name @@ -364,13 +364,13 @@ def ldap_sync_from_groups(group_infos): all_dns = set(ldap_groups.keys()) # First, update all existing groups with known DNs - existing = Group.objects.filter(ldap_dn__in=all_dns, school_term=school_term).select_related( - None - ) - existing_dns = set([v.ldap_dn for v in existing]) + existing = Group.objects.filter( + extended_data__ldap_dn__in=all_dns, school_term=school_term + ).select_related(None) + existing_dns = set([v.extended_data["ldap_dn"] for v in existing]) for obj in existing: - obj.name = ldap_groups[obj.ldap_dn]["name"] - obj.short_name = ldap_groups[obj.ldap_dn]["short_name"] + obj.name = ldap_groups[obj.extended_data["ldap_dn"]]["name"] + obj.short_name = ldap_groups[obj.extended_data["ldap_dn"]]["short_name"] logger.info(f"Updating {len(existing)} Django groups") try: Group.objects.bulk_update(existing, ("name", "short_name")) @@ -385,7 +385,7 @@ def ldap_sync_from_groups(group_infos): for dn in nonexisting_dns: nonexisting.append( Group( - ldap_dn=dn, + extended_data=dict(ldap_dn=dn), name=ldap_groups[dn]["name"], short_name=ldap_groups[dn]["short_name"], school_term=school_term, @@ -420,7 +420,7 @@ def mass_ldap_import(): group_objects = ldap_sync_from_groups(ldap_groups) # Create lookup table as cache for later code - group_dict = {obj.ldap_dn: obj for obj in group_objects} + group_dict = {obj.extended_data["ldap_dn"]: obj for obj in group_objects} # Guess LDAP username field from user filter uid_field = re.search( @@ -482,14 +482,14 @@ def mass_ldap_import(): if member_attr.lower() == "memberuid": members = Person.objects.filter(user__username__in=ldap_members) else: - members = Person.objects.filter(ldap_dn__in=ldap_members) + members = Person.objects.filter(extended_data__ldap_dn__in=ldap_members) if get_site_preferences()["ldap__group_sync_owner_attr"]: ldap_owners = [_.lower() for _ in attrs[owner_attr]] if owner_attr in attrs else [] if get_site_preferences()["ldap__group_sync_owner_attr_type"] == "uid": owners = Person.objects.filter(user__username__in=ldap_owners) elif get_site_preferences()["ldap__group_sync_owner_attr_type"] == "dn": - owners = Person.objects.filter(ldap_dn__in=ldap_owners) + owners = Person.objects.filter(extended_data__ldap_dn__in=ldap_owners) group.members.set(members) if get_site_preferences()["ldap__group_sync_owner_attr"]: