From d3b0c64fcec9a97626dbaca238a0186f180fe2fd Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Fri, 22 Apr 2011 13:43:30 -0400 Subject: Modify the default attributes shown in user-find to match the UI design. This change means the UI can stop using the --all option and have to retrieve significantly less information from the server. It also speeds up user-find as it doesn't have to calculate membership. This adds a new baseclass parameter, search_display_attributes, which can provide a separate list from default_attributes just for find commands. The UI will need to be changed to switch from using cn to using givenname and sn. ticket 1136 --- ipalib/plugins/baseldap.py | 9 +++++++-- ipalib/plugins/user.py | 5 +++++ tests/test_xmlrpc/test_user_plugin.py | 14 +++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index 044e00e08..4b80c6d06 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -256,6 +256,7 @@ class LDAPObject(Object): search_attributes = [] search_attributes_config = None default_attributes = [] + search_display_attributes = [] # attributes displayed in LDAPSearch hidden_attributes = ['objectclass', 'aci'] # set rdn_attribute only if RDN attribute differs from primary key! rdn_attribute = '' @@ -1362,11 +1363,15 @@ class LDAPSearch(CallbackInterface, crud.Search): search_kw = self.args_options_2_entry(**options) + if self.obj.search_display_attributes: + defattrs = self.obj.search_display_attributes + else: + defattrs = self.obj.default_attributes if options.get('all', False): - attrs_list = ['*'] + self.obj.default_attributes + attrs_list = ['*'] + defattrs else: attrs_list = list( - set(self.obj.default_attributes + search_kw.keys()) + set(defattrs + search_kw.keys()) ) if self.obj.search_attributes: diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py index efd9e278a..a058ff7ed 100644 --- a/ipalib/plugins/user.py +++ b/ipalib/plugins/user.py @@ -86,6 +86,11 @@ class user(LDAPObject): 'telephonenumber', 'title', 'memberof', 'nsaccountlock', 'memberofindirect', ] + search_display_attributes = [ + 'uid', 'givenname', 'sn', 'homedirectory', 'loginshell', + 'mail', 'telephonenumber', 'title', 'nsaccountlock', + 'uidnumber', 'gidnumber', + ] uuid_attribute = 'ipauniqueid' attribute_members = { 'memberof': ['group', 'netgroup', 'role'], diff --git a/tests/test_xmlrpc/test_user_plugin.py b/tests/test_xmlrpc/test_user_plugin.py index 4d9970219..597b3b9ba 100644 --- a/tests/test_xmlrpc/test_user_plugin.py +++ b/tests/test_xmlrpc/test_user_plugin.py @@ -184,8 +184,9 @@ class test_user(Declarative): loginshell=[u'/bin/sh'], sn=[u'User1'], uid=[user1], - memberof_group=[u'ipausers'], nsaccountlock=[u'False'], + uidnumber=[fuzzy_digits], + gidnumber=[fuzzy_digits], ), ], summary=u'1 user matched', @@ -208,8 +209,9 @@ class test_user(Declarative): loginshell=[u'/bin/bash'], sn=[u'Administrator'], uid=[u'admin'], - memberof_group=[u'admins'], nsaccountlock=[u'False'], + uidnumber=[fuzzy_digits], + gidnumber=[fuzzy_digits], ), dict( dn=u'uid=tuser1,cn=users,cn=accounts,' + api.env.basedn, @@ -218,8 +220,9 @@ class test_user(Declarative): loginshell=[u'/bin/sh'], sn=[u'User1'], uid=[user1], - memberof_group=[u'ipausers'], nsaccountlock=[u'False'], + uidnumber=[fuzzy_digits], + gidnumber=[fuzzy_digits], ), ], summary=u'2 users matched', @@ -242,8 +245,9 @@ class test_user(Declarative): loginshell=[u'/bin/bash'], sn=[u'Administrator'], uid=[u'admin'], - memberof_group=[u'admins'], nsaccountlock=[u'False'], + uidnumber=[fuzzy_digits], + gidnumber=[fuzzy_digits], ), ], summary=u'1 user matched', @@ -459,7 +463,7 @@ class test_user(Declarative): uid=[user2], memberof_group=[u'ipausers'], nsaccountlock=[u'False'], - manager=user1, + manager=[user1], ), summary=u'Modified user "%s"' % user2, value=user2, -- cgit