ldap: only wrap LDAPObject.result4 (#31273)
result4() is the only function in python-ldap really handling results from LDAP requests, all other methods calls it; if we encode attributes from other function we duplicate work.
This commit is contained in:
parent
2bb6f8aab3
commit
0f0c0790d0
|
@ -90,13 +90,6 @@ if PYTHON_LDAP3 is True:
|
|||
attrs = {attribute: filter_non_unicode_values(attrs[attribute]) for attribute in attrs}
|
||||
yield dn, attrs
|
||||
|
||||
def search_s(self, base, scope, filterstr='(objectclass=*)', attrlist=None, attrsonly=0):
|
||||
return self._convert_results_to_unicode(
|
||||
NativeLDAPObject.search_s(self, base, scope,
|
||||
filterstr=filterstr,
|
||||
attrlist=attrlist,
|
||||
attrsonly=attrsonly))
|
||||
|
||||
def modify_s(self, dn, modlist):
|
||||
new_modlist = []
|
||||
for mod_op, mod_typ, mod_vals in modlist:
|
||||
|
@ -114,15 +107,20 @@ if PYTHON_LDAP3 is True:
|
|||
new_modlist.append((mod_op, mod_typ, mod_vals))
|
||||
return NativeLDAPObject.modify_s(self, dn, new_modlist)
|
||||
|
||||
def result3(self, msgid=ldap.RES_ANY, all=1, timeout=None, resp_ctrl_classes=None):
|
||||
result_type, data, msgid, serverctrls = NativeLDAPObject.result3(self,
|
||||
msgid=msgid,
|
||||
all=all,
|
||||
timeout=timeout,
|
||||
resp_ctrl_classes=resp_ctrl_classes)
|
||||
if data:
|
||||
data = self._convert_results_to_unicode(data)
|
||||
return result_type, data, msgid, serverctrls
|
||||
def result4(self, msgid=ldap.RES_ANY, all=1, timeout=None, add_ctrls=0,
|
||||
add_intermediates=0, add_extop=0, resp_ctrl_classes=None):
|
||||
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value = NativeLDAPObject.result4(
|
||||
self,
|
||||
msgid=msgid,
|
||||
all=all,
|
||||
timeout=timeout,
|
||||
add_ctrls=add_ctrls,
|
||||
add_intermediates=add_intermediates,
|
||||
add_extop=add_extop,
|
||||
resp_ctrl_classes=resp_ctrl_classes)
|
||||
if resp_data:
|
||||
resp_data = self._convert_results_to_unicode(resp_data)
|
||||
return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value
|
||||
|
||||
elif PYTHON_LDAP3 is False:
|
||||
class LDAPObject(NativeLDAPObject):
|
||||
|
@ -149,17 +147,6 @@ elif PYTHON_LDAP3 is False:
|
|||
attrs = {attribute: filter_non_unicode_values(attrs[attribute]) for attribute in attrs}
|
||||
yield force_text(dn), attrs
|
||||
|
||||
def search_s(self, base, scope, filterstr='(objectclass=*)', attrlist=None, attrsonly=0):
|
||||
base = force_bytes(base)
|
||||
filterstr = force_bytes(filterstr)
|
||||
if attrlist:
|
||||
attrlist = map(force_bytes, attrlist)
|
||||
return self._convert_results_to_unicode(
|
||||
NativeLDAPObject.search_s(self, base, scope,
|
||||
filterstr=filterstr,
|
||||
attrlist=attrlist,
|
||||
attrsonly=attrsonly))
|
||||
|
||||
def search_ext(self, base, scope, filterstr='(objectclass=*)',
|
||||
attrlist=None, attrsonly=0, serverctrls=None,
|
||||
clientctrls=None, timeout=-1, sizelimit=0):
|
||||
|
@ -196,15 +183,20 @@ elif PYTHON_LDAP3 is False:
|
|||
new_modlist.append((mod_op, mod_typ, mod_vals))
|
||||
return NativeLDAPObject.modify_s(self, dn, new_modlist)
|
||||
|
||||
def result3(self, msgid=ldap.RES_ANY, all=1, timeout=None, resp_ctrl_classes=None):
|
||||
result_type, data, msgid, serverctrls = NativeLDAPObject.result3(self,
|
||||
msgid=msgid,
|
||||
all=all,
|
||||
timeout=timeout,
|
||||
resp_ctrl_classes=resp_ctrl_classes)
|
||||
if data:
|
||||
data = self._convert_results_to_unicode(data)
|
||||
return result_type, data, msgid, serverctrls
|
||||
def result4(self, msgid=ldap.RES_ANY, all=1, timeout=None, add_ctrls=0,
|
||||
add_intermediates=0, add_extop=0, resp_ctrl_classes=None):
|
||||
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value = NativeLDAPObject.result4(
|
||||
self,
|
||||
msgid=msgid,
|
||||
all=all,
|
||||
timeout=timeout,
|
||||
add_ctrls=add_ctrls,
|
||||
add_intermediates=add_intermediates,
|
||||
add_extop=add_extop,
|
||||
resp_ctrl_classes=resp_ctrl_classes)
|
||||
if resp_data:
|
||||
resp_data = self._convert_results_to_unicode(resp_data)
|
||||
return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value
|
||||
|
||||
|
||||
def map_text(d):
|
||||
|
|
Loading…
Reference in New Issue