Skip to content

Commit

Permalink
Better hack: filterstr=None
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Heimes <cheimes@redhat.com>
  • Loading branch information
Christian Heimes authored and Petr Viktorin committed Jan 10, 2018
1 parent e56f617 commit 274d826
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
3 changes: 3 additions & 0 deletions Doc/reference/ldap.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1068,7 +1068,10 @@ and wait for and return with the server's result, or with
or :py:meth:`search_ext_s()` (client-side search limit). If non-zero
not more than *sizelimit* results are returned by the server.

.. versionchanged:: 3.0

``filterstr=None`` is equal to ``filterstr='(objectClass=*)'``.


.. py:method:: LDAPObject.start_tls_s() -> None
Expand Down
33 changes: 20 additions & 13 deletions Lib/ldap/ldapobject.py
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermedi
resp_data = self._bytesify_results(resp_data, with_ctrls=add_ctrls)
return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value

def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
def search_ext(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
"""
search(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]]) -> int
search_s(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]])
Expand Down Expand Up @@ -793,17 +793,24 @@ def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrson
The amount of search results retrieved can be limited with the
sizelimit parameter if non-zero.
"""

if PY2:
base = self._bytesify_input('base', base)
# workaround for default argument,
# see https://github.com/python-ldap/python-ldap/issues/147
if self.bytes_mode and filterstr == '(objectClass=*)':
filterstr = b'(objectClass=*)'
if filterstr is None:
# workaround for default argument,
# see https://github.com/python-ldap/python-ldap/issues/147
if self.bytes_mode:
filterstr = b'(objectClass=*)'
else:
filterstr = u'(objectClass=*)'
else:
filterstr = self._bytesify_input('filterstr', filterstr)
if attrlist is not None:
attrlist = tuple(self._bytesify_input('attrlist', a)
for a in attrlist)
else:
if filterstr is None:
filterstr = '(objectClass=*)'
return self._ldap_call(
self._l.search_ext,
base,scope,filterstr,
Expand All @@ -813,17 +820,17 @@ def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrson
timeout,sizelimit,
)

def search_ext_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
def search_ext_s(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
return self.result(msgid,all=1,timeout=timeout)[1]

def search(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
def search(self,base,scope,filterstr=None,attrlist=None,attrsonly=0):
return self.search_ext(base,scope,filterstr,attrlist,attrsonly,None,None)

def search_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
def search_s(self,base,scope,filterstr=None,attrlist=None,attrsonly=0):
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)

def search_st(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
def search_st(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,timeout=-1):
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout)

def start_tls_s(self):
Expand Down Expand Up @@ -910,7 +917,7 @@ def search_subschemasubentry_s(self,dn=None):
dn = empty_dn
try:
r = self.search_s(
dn,ldap.SCOPE_BASE,'(objectClass=*)',[attrname]
dn,ldap.SCOPE_BASE,None,[attrname]
)
except (ldap.NO_SUCH_OBJECT,ldap.NO_SUCH_ATTRIBUTE,ldap.INSUFFICIENT_ACCESS):
r = []
Expand Down Expand Up @@ -943,7 +950,7 @@ def read_s(self,dn,filterstr=None,attrlist=None,serverctrls=None,clientctrls=Non
r = self.search_ext_s(
dn,
ldap.SCOPE_BASE,
filterstr or '(objectClass=*)',
filterstr,
attrlist=attrlist,
serverctrls=serverctrls,
clientctrls=clientctrls,
Expand Down Expand Up @@ -977,7 +984,7 @@ def read_subschemasubentry_s(self,subschemasubentry_dn,attrs=None):
else:
return subschemasubentry

def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1):
def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1):
"""
Returns a unique entry, raises exception if not unique
"""
Expand All @@ -996,7 +1003,7 @@ def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass
raise NO_UNIQUE_ENTRY('No or non-unique search result for %s' % (repr(filterstr)))
return r[0]

def read_rootdse_s(self, filterstr='(objectClass=*)', attrlist=None):
def read_rootdse_s(self, filterstr=None, attrlist=None):
"""
convenience wrapper around read_s() for reading rootDSE
"""
Expand Down

0 comments on commit 274d826

Please sign in to comment.