From fa63b4ac39c351464b68eced3ead61a8f1e8ce64 Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Tue, 23 Feb 2021 01:51:20 +0100 Subject: [PATCH] Fixed relationship set and objectClass attribute handling for session.add --- ldap_mapper/core.py | 2 ++ ldap_mapper/relationship.py | 2 +- uffd/user/views_user.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ldap_mapper/core.py b/ldap_mapper/core.py index c5fcff11..57c8663e 100644 --- a/ldap_mapper/core.py +++ b/ldap_mapper/core.py @@ -60,12 +60,14 @@ class AddOperation: def apply_object(self, obj_state): obj_state.dn = self.dn obj_state.attributes = {name: values.copy() for name, values in self.attributes.items()} + obj_state.attributes['objectClass'] = obj_state.attributes.get('objectClass', []) + list(self.object_classes) def apply_session(self, session_state): assert self.dn not in session_state.objects session_state.objects[self.dn] = self.obj for name, values in self.attributes.items(): session_state.ref(self.obj, name, values) + session_state.ref(self.obj, 'objectClass', self.object_classes) def apply_ldap(self, conn): success = conn.add(self.dn, self.object_classes, self.attributes) diff --git a/ldap_mapper/relationship.py b/ldap_mapper/relationship.py index d8e256aa..cf5e42bb 100644 --- a/ldap_mapper/relationship.py +++ b/ldap_mapper/relationship.py @@ -28,7 +28,7 @@ class RelationshipSet(MutableSet): def __iter__(self): def get(dn): - return make_modelobj(self.__ldap_object.session.get(dn, self.__model.ldap_filter_params), self.__destmodel) + return make_modelobj(self.__ldap_object.session.get(dn, self.__destmodel.ldap_filter_params), self.__destmodel) dns = set(self.__ldap_object.getattr(self.__name)) return iter(filter(lambda obj: obj is not None, map(get, dns))) diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py index 63f17cf4..18b380b0 100644 --- a/uffd/user/views_user.py +++ b/uffd/user/views_user.py @@ -105,11 +105,11 @@ def csvimport(): if not newuser.set_mail(row[1]): flash("invalid mail address, skipped : {}".format(row)) continue + ldap.session.add(newuser) for role in roles: if (str(role.id) in row[2].split(';')) or role.name in current_app.config["ROLES_BASEROLES"]: role.members.add(newuser) newuser.update_groups() - ldap.session.add(newuser) try: ldap.session.commit() db.session.commit() -- GitLab