[lc_ldap] search by unicode string

This commit is contained in:
Valentin Samir 2013-06-13 00:52:54 +02:00
parent 57944ade6f
commit 80929daddd

View file

@ -55,6 +55,7 @@ if not "/usr/scripts/" in sys.path:
sys.path.append('/usr/scripts/') sys.path.append('/usr/scripts/')
import gestion.config as config import gestion.config as config
import cranslib.deprecated
# A priori, ldif_to_uldif et ldif_to_cldif sont obsolètes, # A priori, ldif_to_uldif et ldif_to_cldif sont obsolètes,
# du fait de l'apparition de AttrsDict dans attributs.py # du fait de l'apparition de AttrsDict dans attributs.py
@ -166,11 +167,14 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
dn = res[0][0] dn = res[0][0]
return dn return dn
def search(self, filterstr='(objectClass=*)', mode='ro', dn=variables.base_dn, scope=ldap.SCOPE_SUBTREE, sizelimit=1000): def search(self, filterstr=u'(objectClass=*)', mode='ro', dn=variables.base_dn, scope=ldap.SCOPE_SUBTREE, sizelimit=1000):
"""La fonction de recherche dans la base LDAP qui renvoie un liste de """La fonction de recherche dans la base LDAP qui renvoie un liste de
:py:class:`CransLdapObject`. On utilise la feature de ``sizelimit`` de :py:class:`CransLdapObject`. On utilise la feature de ``sizelimit`` de
``python-ldap``""" ``python-ldap``"""
ldap_res = self.search_ext_s(dn, scope, filterstr, sizelimit=sizelimit) if not isinstance(filterstr, unicode):
cranslib.deprecated.usage("search ne devrait utiliser que des unicode comme filtre(%r)" % filterstr, level=3)
filterstr = filterstr.decode('utf-8')
ldap_res = self.search_ext_s(dn, scope, filterstr.encode('utf-8'), sizelimit=sizelimit)
ret = [] ret = []
for dn, ldif in ldap_res: for dn, ldif in ldap_res:
uldif = ldif_to_uldif(ldif) uldif = ldif_to_uldif(ldif)