summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2007-10-31 10:08:16 -0400
committerRob Crittenden <rcritten@redhat.com>2007-10-31 10:08:16 -0400
commit303d5ebad9cea79c1e67e1be73ab629846b8121a (patch)
treeaa59f523ad13aa6d84128a1428e6e6a99c18afd1
parent1d6e88565c48ee0799ac1df58d4a56444388f0c8 (diff)
downloadfreeipa-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.py9
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/group.py30
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)