Rest api ẅith python » History » Revision 13
« Previous |
Revision 13/18
(diff)
| Next »
Max Tepkeev, 2014-01-17 08:21
Using the REST API with Python¶
Here is the list of available libraries for using REST API with Python:
PythonRedmine:¶
Python Redmine is a 2014 year library which purpose is to support 100% features of Redmine's REST API. It provides a simple but powerful Pythonic API inspired by a well-known Django ORM, is thoroughly tested and has 100% code coverage. Documentation is available at read the docs. Example:
>>> from redmine import Redmine
>>> redmine = Redmine('http://demo.redmine.org')
>>> project = redmine.project.get('vacation')
>>> project.id
30404
>>> project.identifier
'vacation'
>>> project.created_on
datetime.datetime(2013, 12, 31, 13, 27, 47)
>>> project.issues
<redmine.resultsets.ResourceSet object with Issue resources>
>>> project.issues[0]
<redmine.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
<redmine.resultsets.ResourceSet object with TimeEntry resources>
PyRedmineWS example:¶
Suppose Eric fell ill and was out for several days. You need to crawl through the project called Parrot and move any due date for issues assigned to Eric out by two more weeks.
The dateutil library contains a handy method called relativedelta for calculating relative dates.
# 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 example:¶
# 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 example: TBD¶
Updated by Max Tepkeev almost 11 years ago · 13 revisions