Index: univention-directory-manager-modules/modules/univention/admin/handlers/groups/group.py =================================================================== --- univention-directory-manager-modules/modules/univention/admin/handlers/groups/group.py (Revision 7716) +++ univention-directory-manager-modules/modules/univention/admin/handlers/groups/group.py (Arbeitskopie) @@ -388,8 +388,19 @@ if old != new: ml.append( ( 'uniqueMember', old, new ) ) uids = self.lo.getAttr( self.dn, 'memberUid' ) - new = map( lambda x: x[ x.find( '=' ) + 1 : x.find( ',' ) ], new ) - ml.append( ( 'memberUid', uids, new ) ) + new_uids = [] + for member in new: + if member.startswith('uid='): # UID is stored in DN --> use UID directly + new_uids.append( member[ member.find('=') + 1 : member.find(',') ] ) # string between first '=' and first ',' + else: # UID is not stored in DN --> fetch UID by DN + uid_list = self.lo.getAttr(member, 'uid') + if len(uid_list) == 0: + univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, 'groups/group: A groupmember has no UID (%s)' % member) + else: + new_uids.append(uid_list[0]) + if len(uid_list) > 1: + univention.debug.debug(univention.debug.ADMIN, univention.debug.WARN, 'groups/group: A groupmember has multiple UIDs (%s %s)' % (member, str(uid_list))) + ml.append( ( 'memberUid', uids, new_uids ) ) return ml def _ldap_post_create(self):