專案

一般

個人檔案

動作

使用 Python 操作 REST API

以下列出使用 Python 操作 REST API 的可用函式庫

  1. Python-Redmine
  2. PyRedmineWS
  3. PyActiveResource
  4. PyRed

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 個版本