跳转到主要内容

实验性Python-Sharepoint连接器

项目描述

haufe.sharepoint

haufe.sharepoint 允许通过Sharepoint SOAP API(针对Microsoft Sharepoint Services 3.0进行测试)与Sharepoint 列表 进行交互。

功能

  • 检索Sharepoint列表定义

  • 检索所有列表项

  • 添加列表项

  • 删除列表项

  • 更新列表项

  • 通用查询

  • 通过NTLM进行身份验证

用法

为了连接到Sharepoint,您需要以下参数

  • 列表WSDL URL

  • 您想要交互的相关Sharepoint列表的ID/名称

  • 有效的Sharepoint用户名和密码(拥有相关权限)

API使用

连接到Sharepoint

为了连接到Sharepoint,您需要导入Connector方法,该方法是一个工厂,返回一个返回ListEndPoint实例的ListEndPoint实例

> from haufe.sharepoint import Connector
> url = 'http://sharepoint/bereiche/onlineschulungen/'
> username = 'YourDomain\\account'
> password = 'secret'
> list_id = '60e3f442-6faa-4b49-814d-2ce2ec88b8d5'
> service = Connector(url, username, password, list_id)

Sharepoint列表模型内省

列表模式内部可通过ListEndPoint实例的model属性访问

> fields = service.model

列表的主键通过primary_key属性公开

> primary_key = service.primary_key

所有所需字段名称和所有字段的列表通过以下方式提供

> all_fields = service.all_fields
> required_fields = service.required_fields

列表项删除

为了通过主键值删除列表项,您可以使用deleteItems()方法

> result = service.deleteItems('54', '55')
> print result
> print result.result
> print result.ok

result对象是ParsedSoapResult的实例,提供ok(True|False)标志,指示操作的整体成功或整体失败。可以通过迭代ParsedSoapResult实例的result属性来获取单个错误代码。

更新列表项

您可以通过向 updateItems() 方法传递一个或多个字典来更新现有的列表项。每个字典必须包含相关主键的值(在这种情况下是 ID 字段)

> data = dict(ID='77', Title=u'Ruebennase', FirstName=u'Heinz')
> result = service.updateItems(data)
> print result
> print result.result
> print result.ok

updateItems() 不会引发任何异常。相反,您需要检查结果对象的 ok 属性以及必要时的结果属性 result 的单个项

# update an item (non-existing ID)
> data = dict(ID='77000', Title=u'Becker')
> result = service.updateItems(data)
> print result
> print result.result
> print result.ok

向列表添加项

addItems() 方法的工作方式与 updateItems() 方法类似,只不过不需要传入主键(因为客户端不知道)。将项添加到列表后分配的主键值应从 result 对象中获取

> data = dict(Title=u'Ruebennase', FirstName=u'Heinz')
> result = service.addItems(data)
> print result
> print result.result
> print result.ok
> print 'assigned ID:', result.result[0]['row']._ows_ID

检索单个列表项

getItem() 将根据主键值返回单个项

> data = service.getItem('77')

检索所有列表项

getItems() 将返回所有列表项(请谨慎使用!)

> items = service.getItems()

通用查询API

query(**kw) 可以用于使用任意查询参数查询列表,其中每个子查询都必须进行精确匹配。所有子查询都使用逻辑AND组合

> items = service.query(FirstName='Heinz', Title='Becker')

结果以Python字典列表形式返回。所有查询参数都必须代表列表的有效字段名(否则引发 ValueError 异常)。

为了在所有查询参数上执行子串搜索,可以传递 mode='contains' 参数。要指定所有查询参数的前缀搜索,请使用 mode='beginswith'

视图支持

haufe.sharepoint 支持Sharepoint的列表视图。您可以选择默认视图用于查询Sharepoint,如下所示

> service.setDefaultView('{D9DF14B-21F2-4D75-B796-EA74647C30C6'}')

或者您可以通过将视图名称作为 viewName 方法参数传递来在每次查询的基础上选择视图(适用于 getItem()getItems()query()

> items = service.getItems(viewName='{D9DF14B-21F2-4D75-B796-EA74647C30C6'}')

命令行用法

haufe.sharepoint 随附一个小的 sharepoint-inspector 命令行实用工具

sharepoint-inspector --url <URL> --list <LIST-ID-OR-NAME> --username <USERNAME> --password <PASSWORD> --cmd <CMD>

其中 <CMD> 是 fieldsitems

要求

  • Python 2.4 或更高版本(不支持 Python 3.X)

已测试

  • 使用 Python 2.4-2.6 进行测试

  • suds 0.4.1 beta 或 suds 仓库的检出(https://fedorahosted.org/suds/)。suds 0.4.0 是 _not_ 充足的!

  • python-ntlm 1.0

  • Microsoft Sharepoint Services 3.0 API

作者

为德国弗莱堡的 Haufe-Lexware GmbH 编写。

ZOPYX Limited
Andreas Jung
Charlottenstr. 37/1
D-72070 Tuebingen
www.zopyx.com

变更日志

0.1.9 - 2011/06/03

  • 修复了一些文档错误

  • 在连接时添加了日志记录

0.1.8 - 2011/05/30

  • 修复了异常中的参数使用不当

0.1.7 - 2011/05/24

  • 应用了包含一些小修复的第三方补丁

0.1.6 - 2011/05/04

  • 更好的连接错误处理

  • 自动将WSDL URL前缀添加到Sharepoint URL中

  • 修复了getItems()中空结果集的问题

0.1.5 - 2011/02/23

  • 添加了checkin_file()、checkout_file()

  • 现在可以通过Connector() API配置连接超时

  • 添加了setDefaultView() API

0.1.4 - 2011/02/22

  • 通过query() API支持精确匹配|子串|前缀搜索

0.1.3 - 2011/02/22

  • 添加了通用query() API

0.1.2 - 2011/02/21

  • 正确实现了getItem()

0.1.1 - 2011/02/18

  • 一些小修复

  • 更新了文档

0.1 - 2011/02/17

  • 初始发布

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

haufe.sharepoint-0.1.9.tar.gz (11.4 kB 查看哈希值)

上传时间

支持者