動作
使用 Python 操作 REST API¶
以下列出使用 Python 操作 REST API 的可用函式庫
Python-Redmine:¶
Python-Redmine 是一個支援 Redmine REST API 所有功能的函式庫。 它提供了一個簡單但強大的 Python 風格 API,其靈感來自著名的 Django ORM,並且經過全面測試。範例
>>> from redminelib import Redmine
>>> redmine = Redmine('http://demo.redmine.org', username='foo', password='bar')
>>> project = redmine.project.get('vacation')
>>> project.id
30404
>>> project.identifier
'vacation'
>>> project.created_on
datetime.datetime(2013, 12, 31, 13, 27, 47)
>>> project.issues
<redminelib.resultsets.ResourceSet object with Issue resources>
>>> project.issues[0]
<redminelib.resources.Issue #34441 "Vacation">
>>> dir(project.issues[0])
['assigned_to', 'author', 'created_on', 'description', 'done_ratio',
'due_date', 'estimated_hours', 'id', 'priority', 'project', 'relations',
'start_date', 'status', 'subject', 'time_entries', 'tracker', 'updated_on']
>>> project.issues[0].subject
'Vacation'
>>> project.issues[0].time_entries
<redminelib.resultsets.ResourceSet object with TimeEntry resources>
PyRedmineWS 範例:¶
假設 Eric 生病請了好幾天假。您需要瀏覽名為 Parrot 的專案,並將分配給 Eric 的議題的到期日延後兩週。
dateutil 函式庫包含一個方便的方法叫做 relativedelta,用於計算相對日期。
# Import the Redmine class
from redmine import Redmine
from dateutil.relativedelta import relativedelta
server = Redmine('http://my-server.com', username='Me', password='seakrit')
project = server.projects['parrot']
# Find Eric in the user data
for u in server.users:
if u.firstname == 'Eric' and u.lastname == 'Idle':
user = u
break
else:
raise Exception("Didn't find Eric Idle in the user dateabase")
# Extend issues in project assigned to user by two weeks
for issue in project.issues(assigned_to_id=user.id):
if issue.due_date is not None:
issue.due_date += relativedelta(weeks=+2)
issue.save('Giving Eric more time to complete - he was out ill')
PyActiveResource 範例:¶
# Importing pyactiveresource
from pyactiveresource.activeresource import ActiveResource
class Issue(ActiveResource):
_site = 'http://redmine.foo.org'
_user = 'username'
_password = 'password'
# Get issues
issues = Issue.find()
# Get a specific issue, from its id
issue = Issue.find(1345)
# Issue attributes
# Updating an attribute
PyRed 範例:待辦事項¶
由 Max Tepkeev 於 超過 7 年前 更新 · 18 個版本