Have the GUI use memberOf() instead of looping through the member DNs

Fix a bug in the local transport version of memberOf()
This commit is contained in:
Rob Crittenden 2007-10-31 10:08:16 -04:00
parent 1d6e88565c
commit 303d5ebad9
2 changed files with 11 additions and 24 deletions

View File

@ -321,6 +321,13 @@ class IPAClient:
"""Do a memberOf search of groupdn and return the attributes in
attr_list (an empty list returns everything)."""
return self.transport.memberOf(groupdn, attr_list)
results = self.transport.memberOf(groupdn, attr_list)
counter = results[0]
entries = [counter]
for e in results[1:]:
if e is not None:
entries.append(user.User(e))
return entries

View File

@ -183,20 +183,8 @@ class GroupController(IPAController):
#
# convert members to users, for easier manipulation on the page
#
member_dns = []
if group_dict.has_key('uniquemember'):
member_dns = group_dict.get('uniquemember')
# remove from dict - it's not needed for update
# and we are storing the members in a different form
del group_dict['uniquemember']
if not(isinstance(member_dns,list) or isinstance(member_dns,tuple)):
member_dns = [member_dns]
# TODO: convert this into an efficient (single) function call
members = map(
lambda dn: client.get_entry_by_dn(dn, ['dn', 'givenname', 'sn',
'uid', 'cn']),
member_dns)
members = client.memberOf(group.dn, ['dn', 'givenname', 'sn', 'uid', 'cn'])
members.sort(self.sort_group_member)
# Map users into an array of dicts, which can be serialized
@ -360,17 +348,9 @@ class GroupController(IPAController):
#
# convert members to users, for display on the page
#
member_dns = []
if group_dict.has_key('uniquemember'):
member_dns = group_dict.get('uniquemember')
if not(isinstance(member_dns,list) or isinstance(member_dns,tuple)):
member_dns = [member_dns]
# TODO: convert this into an efficient (single) function call
members = map(
lambda dn: client.get_entry_by_dn(dn, ['dn', 'givenname', 'sn',
'uid', 'cn']),
member_dns)
members = client.memberOf(group.dn, ['dn', 'givenname', 'sn', 'uid', 'cn'])
members = members[1:]
members.sort(self.sort_group_member)
member_dicts = map(lambda member: member.toDict(), members)