版本1 API客户端

v1pysdk-unofficial的Python项目详细描述


#versionone python sdk是versionone api的开源和社区支持的客户端。r解决问题的选项:

*[stackoverflow](http://stackoverflow.com/questions/taged/versionone):用于询问版本号开发社区的问题。
*[github问题](https://github.com/versionone/versionone.sdk.python/issues):用于提交问题其他人可能会尝试解决这个问题。

一般来说,stackoverflow是获得对versionone python sdk支持的最佳选择。

versionone python sdk的源代码是免费和开源的,我们鼓励您通过[提交请求](https://help.gi)来改进它。thub.com/articles/using pull请求)!

服务器上定义的所有资产类型都可用作实例上的属性。元数据只加载一次,因此必须
创建新的v1meta实例来获取元数据更改。每个资产类都有所有资产属性和操作的属性。

``python
v1pysdk import v1meta

v1meta(
实例URL='http://localhost/versionone',
用户名='admin',
密码='admin'
)为v1:

user=v1.member(20)内部数字id


print user.createdate,user.name
`````

\通过将资产ID传递给资产类:




加载的值和关系:

注意:对每个对象同步发出属性访问请求代价高昂。我们建议
使用查询语法在单个http事务中从相关资产
中选择、筛选、聚合和检索值。


资产实例创建为空,或者使用查询结果(如果可用)。对于当前未获取的属性,将访问服务器。在第一个未找到的属性上获取一组基本属性。



int epic=>;epic(324355)。使用"数据"({'assettype':'epic',
'description':"使新团队成员的功能更简单,'assetstate':'64',
'securityscope'name':'projects',number':'e-01958','super'u number':'e-01902',
'作用域名称':'项目','超级名称':'新功能开发',
'作用域':[作用域(314406)],'安全作用域':[作用域(314406)],
'超级':[史诗(312659)],'顺序':'-24','名称':'团队功能'})

还有更多的非基础数据可用,但会引起请求。
打印epic.createDate=>;'2012-05-14t23:45:14.124'

关系图
打印epic.super.scope.name 35;=>;'产品'


因为元数据是作为数据建模的,所以可以找到"基本"属性:

basic_attr_names=列表(v1.attributeDefinition
.其中(isbasic="true")
.选择('name')
.名称





###操作:

ext
属性访问。



如果没有参数,这相当于
"query"、"select"或"where"方法。

oin(m.name代表m in members)http请求每个成员获取名称

o返回具有name属性的成员列表。

资产实例上的"select()"和"where()"方法返回一个查询对象
,您可以在该对象上调用更多的"where()"和"select()"。遍历
查询对象将运行查询。

第一个结果。

查询结果

税收)。

v1.story.where(name='add feature x to main product"):
打印s.name,s.createdate,,'.join([owner.name for owner in s.owners])

'owners')。其中(估计值='10'):
打印s.name,[o.name for o in s.owners]


\r/>.filter("estimate>;'5',totaldone.@count<;'10'")
.select('name'):
打印s.name



em到结果的"数据"映射,键与使用的术语相同。

select_term="workitems:primaryworkitem[status="done'].estimate.@sum"
total_done=(v1.timebox
.where(name="iteration 25")
.select(select_term)

对于result in total完成:
打印"total‘done’story points:",result.data[选择"术语"




结果=(
v1.story
.select('name'、'createDate'、'estimate'、'owners.name')
.filter('owners.ownedWorkitems@count='1')
)对于结果:
writeRow((result['name'],','.join(result['owners.name']))



简单的创建语法:


v1pysdk import v1meta
v1=v1meta(用户名='admin',password='admin')
new戋story=v1.story.create(
name='new story',
scope=v1.scope.where(name='2012 projects').first()

无需提交。
打印new_story.createDate
new_story.quicksignup()
打印owners:"+",".join(story.owners中o的o.name)



输出。

story=v1.story.where(name='super cool feature do over').first()
story.name='super cool feature redux'
story.owners=v1.member.where(name='joe koberg')
v1.commit();刷新服务器上所有挂起的更新

v1元对象还用作上下文管理器,它将在退出时提交脏对象。

vMeta()作为v1:
story=v1.story.where(name='new features').first()
story.owners=v1.member.where(name='joe koberg')

print"story committed隐式提交"。




有关完整示例,请参见v1pysdk/tests/test_u attachment.py文件。


.asof()查询项可以采用ISO日期格式的时间戳或字符串的列表(或多个位置参数)。
查询针对列表中的每个时间戳运行。返回一个iterable,它将迭代所有收集的结果。结果都将包含一个数据项"as of",其中
为该项的"截止"日期。请注意,"截止日期"不是上一个
项更改的日期,而是传递到查询中的完全相同的日期。还要注意
诸如"2012-01-01"之类的时间戳被取为从当天开始的午夜,这自然排除了当天发生的任何活动。您可能需要指定一个时间戳
指定一个特定的小时,或指定第二天的时间戳。

todo:使用什么时区?

v1Meta()作为v1:
结果=(v1.story
。选择"所有者"
。其中(name="fix html5 bug")
.asof("2012-10-10","2012-10-11")
)结果:
打印结果。data['asof'],[o.name for o in result.owners]



polling(todo)


将提供一个简单的回调api来挂接v1meta import v1meta中的资产更改

mailbody="
从:versionone notification<;notifier@versionone.mycorp.com>;
到:john smith<;cto@mycorp.com>;


请注意versionone最近创建的高风险故事{0}。

链接:{1}




您的版本一个软件
".lstrip()

def通知CTO有关高风险的故事(故事):
if story.risk>;10:
导入smtplib,time
server=smtplib.smtp('smtp.mycorp.com')
server.sendmail(邮件正文.format(story.name,story.url))
server.quit()
story.customNotificationLog=(story.customNotificationLog+
"\n通知CTO{0}"。format(time.asctime())

vMeta()作为v1:
vPoller(v1)作为poller:
poller.run_on_new("story",通知_cto_high_risk_stories)


打印"通知完成并更新日志。"





引用了。


资产在需要数据项之前不会发出请求。如果前一个请求返回该属性,则缓存进一步的属性访问
。否则将发出新的请求。

收集和使用一组资产的最快方式是查询,您希望使用的属性包含在"选择"列表中。整个结果集将在单个http事务中返回


写入资产不需要读取它们;设置属性和调用commit
函数不调用"读取"管道。写入资产需要每个脏的
资产实例一个http post。

每个东西都是一个字符串)


*添加调试日志

*增强测试覆盖率

*需要模拟服务器

*示例

*提供实际集成示例

*在"其他资产"上下文中创建资产模板和"创建"包括删除值。

它对xml"act"属性使用了错误的
值,因此无法正确设置多值属性。注意
此时,无法从多值关系中取消设置值。

<2013-07-09 v0.3-为了支持https,已向vmeta和v1client
构造函数添加了"scheme"参数。

可以指定此参数
,而不是指定地址、实例路径、方案和端口参数。

对"list(v1.story.name)"等调用进行了性能增强。如果不存在请求的
属性,则会将其添加到选择列表中,从而防止对每个匹配的资产执行http get


删除了一些不好的示例,并在某些位置清除了日志记录。

修复了ntlm和urllib2的一些问题。(感谢campbell)


缺少的属性现在返回一个none-like对象可以推迟到任何深度。(感谢bazzi)



r/>
*以二进制形式重新分发必须复制上述版权
注意事项、本条件列表以及随分发提供的
文档和/或其他材料中的以下免责声明。

*无论是versionone,inc.的名称还是其
贡献者的名称都不得用于背书或支持未经
versionone,inc.事先特别书面许可,从
本软件派生的mote产品


本软件由版权所有人和
贡献者"按原样"提供,以及任何明示或默示保证,
包括但不限于
适销性和适用性的默示保证。特殊目的是d.在任何情况下,版权所有人或贡献者均不对任何直接、间接、附带、特殊、示范性或后果性损害(包括但不限于购买替代货物或服务、使用损失、数据或利润或业务中断)负责。(on)无论是何种原因引起的,也无论是合同、严格责任或因使用本软件而产生的侵权(包括疏忽或其他)的任何责任理论,即使被告知有可能造成此类损害。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用泛型在Java中生成通用方法?   java从ISO/IEC 197944图像数据文件创建图像   java实现RSA的代码有什么问题?   javascript如何将JsonArray从解析云检索到安卓?   在vaadin中上传和下载java文件   java ListView自定义适配器OnClick启动URL链接   java在一个hbox中提供两个元素的独立对齐   java用类名创建类   java从unix命令行运行jar文件   java FTP下载在文件#146处停止