2.python redmine模块
简介:通过python-redmine模块链接到本地的redmine系统,通过到bug号搜索到相应的bug,查看并更新信息。
1.redmine api
http://www.redmine.org/projects/redmine/wiki/Rest_api
2.Using the REST API with Python
http://www.redmine.org/projects/redmine/wiki/Rest_api_with_python
我使用的是PythonRedmine这个模块
源代码:https://github.com/maxtepkeev/python-redmine
使用手册:http://python-redmine.readthedocs.io/index.html
主要使用的是Resource->Issue 里的内容:
修改redmine
issue = redmine.issue.get(redmineID)获取到的issue
通过dir(issue)可以获得
[u'assigned_to', 'attachments', u'author', 'changesets', 'children', u'created_on', u'custom_fields', u'description', u'done_ratio', u'due_date', u'id', 'journals', u'priority', u'project', 'relations', u'spent_hours', u'start_date', u'status', u'subject', 'time_entries', u'tracker', u'updated_on', 'watchers']
这些是通用的可以在redmine上可以查询并删改的信息。。。吧,由于条件需要用户会选择一些需要的信息,比如source,Product Information,Delay Counter等,这些信息都作为列表元素以单个字典的形式存放在custom_fields中。
custom_fields[n] 会显示第n个已被定义的redmine信息,如
>>> issue.custom_fields[4] <redmine.resources.CustomField #43 "Gerrit Commit number">
custom_fields[n]['id']会显示该redmine信息对应的id,个人认为每一个redmine可选信息是固定的ID值,
>>> issue.custom_fields[4]['id'] 43
custom_fields[n]['value']会显示该redmine信息存储的值,
>>> issue.custom_fields[4]['value'] u''
关于更新issue信息,有两种方式,以更新Gerrit Commit number为例:
>>> redmine.issue.update(12153,custom_fields = [{'id': 43, 'value': '7777'}]) True
>>> issue.custom_fields = [{'id': 43, 'value': u'7777'}] >>> issue.save() True
创建redmine
issue = redmine.issue.new() 创建新的issue
issue.project_id = '13' 选择创建issue的project的ID号,ID号可以通过
issue.subject = 'redmine update' 创建issue的标题
issue.description = 'xxxxxxxxxxxxxxxxxxxxxxx' 添加issue的描述
issue.save() 创建issue的最终环节
from redmine import Redmine
#connect to redmine redmine = Redmine(REDMINE_URL, REDMINE_API_KEY) #fine the redmine issue issue = redmine.issue.get(redmineid) #fine the Gerrit Commit number custom_num = len(issue.custom_fields) n = 0 while n < custom_num: if issue.custom_fields[n]['id'] == 43: break n = n + 1 #update the gerrit id issue.custom_fields = [{'id': 43, 'value': gerritid}] issue.save()