summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-07-12 14:17:33 -0400
committerRob Crittenden <rcritten@redhat.com>2010-07-13 09:27:34 -0400
commit371a4b2c72052e0582abb6d3852d903e4c905bf1 (patch)
tree7d16dbea6a7b270b9c689d91c1c812e4c6c52bbe
parentccaf537aa6323c5161d3420b653025771db75010 (diff)
downloadfreeipa.git-371a4b2c72052e0582abb6d3852d903e4c905bf1.tar.gz
freeipa.git-371a4b2c72052e0582abb6d3852d903e4c905bf1.tar.xz
freeipa.git-371a4b2c72052e0582abb6d3852d903e4c905bf1.zip
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.
-rw-r--r--ipalib/plugins/baseldap.py16
-rw-r--r--ipalib/plugins/group.py1
-rw-r--r--ipalib/plugins/user.py1
3 files changed, 17 insertions, 1 deletions
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)
diff --git a/ipalib/plugins/group.py b/ipalib/plugins/group.py
index 9da4fe56..2558c38a 100644
--- a/ipalib/plugins/group.py
+++ b/ipalib/plugins/group.py
@@ -75,6 +75,7 @@ class group(LDAPObject):
object_name_plural = 'groups'
object_class = ['ipausergroup']
object_class_config = 'ipagroupobjectclasses'
+ search_attributes_config = 'ipagroupsearchfields'
default_attributes = [
'cn', 'description', 'gidnumber', 'member', 'memberof'
]
diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py
index 610d85a9..de5ff2d2 100644
--- a/ipalib/plugins/user.py
+++ b/ipalib/plugins/user.py
@@ -58,6 +58,7 @@ class user(LDAPObject):
object_name_plural = 'users'
object_class = ['posixaccount']
object_class_config = 'ipauserobjectclasses'
+ search_attributes_config = 'ipausersearchfields'
default_attributes = [
'uid', 'givenname', 'sn', 'homedirectory', 'loginshell', 'ou',
'telephonenumber', 'title', 'memberof',