diff options
author | Rob Crittenden <rcritten@redhat.com> | 2007-10-31 10:08:16 -0400 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2007-10-31 10:08:16 -0400 |
commit | 303d5ebad9cea79c1e67e1be73ab629846b8121a (patch) | |
tree | aa59f523ad13aa6d84128a1428e6e6a99c18afd1 | |
parent | 1d6e88565c48ee0799ac1df58d4a56444388f0c8 (diff) | |
download | freeipa-303d5ebad9cea79c1e67e1be73ab629846b8121a.tar.gz freeipa-303d5ebad9cea79c1e67e1be73ab629846b8121a.tar.xz freeipa-303d5ebad9cea79c1e67e1be73ab629846b8121a.zip |
Have the GUI use memberOf() instead of looping through the member DNs
Fix a bug in the local transport version of memberOf()
-rw-r--r-- | ipa-python/ipaclient.py | 9 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/group.py | 30 |
2 files changed, 13 insertions, 26 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py index b0dd8ee6e..9d0bf9b28 100644 --- a/ipa-python/ipaclient.py +++ b/ipa-python/ipaclient.py @@ -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 diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py index d4663f7ae..c3048f0de 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py @@ -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) |