From 371a4b2c72052e0582abb6d3852d903e4c905bf1 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Mon, 12 Jul 2010 14:17:33 -0400 Subject: Add separate var for search attributes and config attribute for search fields Add an optional search_attributes variable in case the attributes you want to display by default aren't what you want to search on. Also link in any cn=ipaconfig attributes that contain a comma-separated list of attributes to search on. --- ipalib/plugins/baseldap.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'ipalib/plugins/baseldap.py') diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index ffd60e7e..2b0ff2d7 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -67,6 +67,8 @@ class LDAPObject(Object): object_name_plural = 'entries' object_class = [] object_class_config = None + search_attributes = [] + search_attributes_config = None default_attributes = [] hidden_attributes = ['objectclass', 'aci'] uuid_attribute = '' @@ -819,11 +821,23 @@ class LDAPSearch(CallbackInterface, crud.Search): set(self.obj.default_attributes + search_kw.keys()) ) + if self.obj.search_attributes: + search_attrs = self.obj.search_attributes + else: + search_attrs = self.obj.default_attributes + if self.obj.search_attributes_config: + config = ldap.get_ipa_config()[1] + config_attrs = config.get( + self.obj.search_attributes_config, []) + if len(config_attrs) == 1 and ( + isinstance(config_attrs[0], basestring)): + search_attrs = config_attrs[0].split(',') + search_kw['objectclass'] = self.obj.object_class attr_filter = ldap.make_filter(search_kw, rules=ldap.MATCH_ALL) search_kw = {} - for a in self.obj.default_attributes: + for a in search_attrs: search_kw[a] = term term_filter = ldap.make_filter(search_kw, exact=False) -- cgit