Подтвердить что ты не робот

Ошибка SharePlum: "Не удается получить пользовательский информационный список"

Я пытаюсь использовать SharePlum, который является модулем Python для SharePoint, но когда я пытаюсь подключиться к моему SharePoint, SharePlum повышает мне эта ошибка:

Traceback (последний последний звонок):
Файл "C:/Users/me/Desktop/Sharpoint/sharpoint.py", строка 13, в site = Site (sharepoint_url, auth = auth)
Файл "C:\Users\me\AppData\Local\Programs\Python\Python36\lib\site-packages\shareplum\shareplum.py", строка 46, в init self.users = self. GetUsers()
Файл "C:\Users\me\AppData\Local\Programs\Python\Python36\lib\site-packages\shareplum\shareplum.py", строка 207, в GetUsers вызывает исключение ( "Невозможно получить пользовательский информационный список" )
Исключение: не удается получить пользовательский информационный список

Вот очень короткий код, который я написал:

auth = HttpNtlmAuth(username, password)  
site = Site(sharepoint_url, auth=auth)

Эта ошибка, кажется, указывает на неправильное имя пользователя/пароль, но я уверен, что тот, который у меня есть, правильный...

4b9b3361

Ответ 1

Я знаю, что это не актуальное решение для вашей проблемы, и я бы добавил только комментарий, но он был слишком длинным, поэтому я отправлю в качестве ответа.

Я не могу реплицировать вашу проблему, но, посмотрев исходный код shareplum.py, вы можете понять, почему программа выдает ошибку. В строке 196 shareplum.py есть аргумент if (if response.status_code == 200:), который проверяет, был ли запрос для доступа к вашему URL-адресу sharepoint успешным (чем у него есть код состояния 200), и если запрос не прошел (чем у него есть другой код состояния), чем он выдает исключение (не может получить пользовательский информационный список). Если вы хотите узнать больше о своей проблеме, перейдите в свой файл shareplum.py( "C:\Users\me\AppData\Local\Programs\Python\Python36\lib\site-packages\shareplum\shareplum.py" ) и добавьте эту строку print('{} {} Error: {} for url: {}'.format(response.status_code, 'Client'*(400 <= response.status_code < 500) + 'Server'*(500 <= response.status_code < 600), response.reason, response.url)) перед строкой 207 ( "raise Exception (" Невозможно получить пользовательский информационный список ")). Тогда ваш shareplum.py должен выглядеть следующим образом:

# Parse Response
    if response.status_code == 200:
        envelope = etree.fromstring(response.text.encode('utf-8'))
        listitems = envelope[0][0][0][0][0]
        data = []  
        for row in listitems:
            # Strip the 'ows_' from the beginning with key[4:]
            data.append({key[4:]: value for (key, value) in row.items() if key[4:]})

        return {'py': {i['ImnName']: i['ID']+';#'+i['ImnName'] for i in data},
                'sp': {i['ID']+';#'+i['ImnName'] : i['ImnName'] for i in data}}
    else:
        print('{} {} Error: {} for url: {}'.format(response.status_code, 'Client'*(400 <= response.status_code < 500) + 'Server'*(500 <= response.status_code < 600), response.reason, response.url))
        raise Exception("Can't get User Info List")

Теперь просто запустите свою программу еще раз, и она должна распечатать, почему она не работает. Я знаю, что лучше не менять файлы в модулях Python, но если вы знаете, что вы меняете, тогда нет проблем, поэтому, когда вы закончите, просто удалите добавленную строку.

Также, когда вы узнаете код состояния, вы можете его искать в Интернете, просто введите его в Google или выполните поиск List_of_HTTP_status_codes.

Ответ 2

Хорошо, похоже, что я нашел решение для своей проблемы, это о URL-адресе Sharepoint, который я дал. Если взять этот пример: https://www.mysharepoint.com/Your/SharePoint/DocumentLibrary
Вы должны удалить последнюю часть: /DocumentLibrary.

Зачем точно удалять эту часть?
Фактически, когда вы углубитесь в свой Sharepoint, ваш URL-адрес будет выглядеть примерно так: https://www.mysharepoint.com/Your/SharePoint/DocumentLibrary/Forms/AllItems.aspx?RootFolder=%2FYour%2FSharePoint%2DocumentLibrary%2FmyPersonnalFolder&FolderCTID=0x0120008BBC54784D92004D1E23F557873CC707&View=%7BE149526D%2DFD1B%2D4BFA%2DAA46%2D90DE0770F287%7D

Вы можете видеть, что право пути находится в RootFolder=%2FYour%2FSharePoint%2DocumentLibrary%2Fmy%20personnal%20folder, а не в "нормальном" URL больше (если это так, оно будет таким, как https://www.mysharepoint.com/Your/SharePoint/DocumentLibrary/myPersonnalFolder/).

Что нужно удалить, так это конец "нормального" URL, поэтому в этом случае /DocumentLibrary.

Итак, мой правильный URL-адрес Sharepoint для ввода в SharePlum будет https://www.mysharepoint.com/Your/SharePoint/

Я новичок в Sharepoint, поэтому я не уверен, что это правильный ответ на эту проблему для других людей, может ли кто-то, кто знает Sharepoint лучше меня, может подтвердить?