Я использую pyad 0.5.20 для выполнения многих операций с активными каталогами, которые пользователь может указать, например, свои данные подключения:
pyad.set_defaults(ldap_server="my.server", username=myusername, password=xxx,ssl=False,ldap_port=123)
И тогда я могу, например, получить группу по ее имени:
group = pyad.adgroup.ADGroup.from_cn(groupname)
моя проблема с pyad.adquery.ADQuery (), когда я пытаюсь использовать его после указания деталей соединения, я получил ошибку
AttributeError: 'module' object has no attribute 'set_defaults'
А вот полный код:
import pythoncom
pythoncom.CoInitialize()
import pyad.adquery
ad = Auth_Type_Config.query.filter_by(auth_type_id=2).first()
if ad:
pyad.set_defaults(ldap_server=ad.host, username=ad.username,
password=ad.password, ssl=ad.is_ssl,
ldap_port=ad.port)
else:
return jsonify({'msg': 'You must configure the authentication method for LDAP.'
, 'status': 'error'})
q = pyad.adquery.ADQuery()
where_clause = "SamAccountName = '{}'"
for (index, item) in enumerate(usernames, start=1):
if index == 1:
continue
where_clause += " or SamAccountName = '{}'"
q.execute_query(attributes=['distinguishedName', 'mail', 'name',
'SamAccountName'],
where_clause=where_clause.format(*usernames),
base_dn='CN=Users,DC=dsp,DC=local')
rows = []
for row in q.get_results():
rows.append(row)
user = (rows[0] if len(rows) > 0 else None)
return rows