Автозаполнение имени сотрудника с использованием Active Directory - PullRequest
0 голосов
/ 20 апреля 2019

Требование: Я пытаюсь создать функцию автозаполнения / автоматического предложения для интерфейсной веб-формы. В серверной части есть функция Python, которая будет запрашивать Active Directory.

Проблема: LIKE оператор не будет работать в pyad.adquery -> execute_query -> where_clause

В PyAD v 0.4.x я вижу приведенный ниже пример с использованием вроде (cn like 'ws%'):

q = pyad.adquery.ADQuery()
q.execute_query(
        attributes = ['distinguishedname', 'description'],
        where_clause = "cn like 'ws%'",
        base_dn = "dc=company,dc=com"
)
for r in q.get_results():
        print r['distinguishedname']

Но когда я использую оператор LIKE, я получаю:

>>> import pyad.adquery
>>> q = pyad.adquery.ADQuery()
>>> q.execute_query(attributes=["displayName"], where_clause="cn = 'Kent'", base_dn="OU=def,DC=abc,DC=com")
>>> q.execute_query(attributes=["displayName"], where_clause="cn like 'Kent%'", base_dn="OU=def,DC=abc,DC=com")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Users\Kent\AppData\Local\Programs\Python\Python37\lib\site-packages\pyad\adquery.py", line 78, in execute_query
    self.__rs, self.__rc = command.Execute()
  File "<COMObject ADODB.Command>", line 3, in Execute
  File "D:\Users\Kent\AppData\Local\Programs\Python\Python37\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Provider', 'One or more errors occurred during processing of command.', None, 1240640, -2147217900), None)
>>>

Я установил v 0.6.0 , в котором отсутствует пример для LIKE в where_clause, но когда я смотрю на файлы пакетов Python (\ Python37 \ Lib \ site-packages \ pyadadquery.py [В def execute_query()] я не вижу причин, по которым это больше не работает.

...