mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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:
parent
1d6e88565c
commit
303d5ebad9
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user