Skip to content
Snippets Groups Projects
Verified Commit 7c605c89 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Drop usage of model extension fields

parent 13994832
No related branches found
No related tags found
1 merge request!129Make compatible with current Core
Pipeline #172840 passed with warnings
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))
......@@ -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"]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment