A REST API for Tryton Models
Installation
Install from python package index:
pip install tryton-restful
Usage
On installation you should be able to use the tryton_restful script which runs a local development server.
tryton_restful --help
Usage: tryton_restful [OPTIONS] HOST PORT
Runs the application on a local development server.
Options:
-c, --config TEXT Path to tryton configuration file
--debug
--threaded / --not-threaded should the process handle each request in a
separate thread?
--help Show this message and exit.
You can run the server by:
tryton_restful -c /path/to/tryton/config
Rest API Endpoints:
/<dbname>/login
POST |
Expects login and password as form data and returns a JSON of user ID and session to be used for subsequent requests |
import requests
import json
DATABASE_NAME = 'rest'
BASE_PATH = 'http://localhost:9000/' + DATABASE_NAME
login_result = requests.post(BASE_PATH + '/login', data={'login': 'admin', 'password': 'admin'})
tryton_session = login_result.json()
print tryton_session
{u'session': u'966689963c0a4a939cb326c1451b0fe9', u'id': 1}
/<dbname>/model/<model.name>
GET |
Return a list of records (Just the ID and rec_name) Params:
|
s = requests.Session()
s.auth = (tryton_session['id'], tryton_session['session'])
# Use the session and get the list of users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}]}
POST |
Creates one or more records in the given model |
# Create a new user
headers = {'content-type': 'application/json'}
values = [
{'name': 'Thomas', 'login': 'thomas', 'password': 'password'},
{'name': 'Alfred', 'login': 'alfred', 'password': 'somethingelse'},
]
users = s.post(BASE_PATH + '/model/res.user', data=json.dumps(values), headers=headers).json()
print users
{u'items': [{u'rec_name': u'Thomas', u'id': 3}, {u'rec_name': u'Alfred', u'id': 4}]}
DELETE |
Delete all records in the given model |
/<dbname>/model/<model.name>/<id>
GET |
Return the details of the given record Params:
|
# Get full details of the first user
print s.get(BASE_PATH + '/model/res.user/1').json()
{u'create_date': u'Sat, 10 May 2014 08:51:16 GMT', ....}
# Get only a limited set of fields
user_url = BASE_PATH + '/model/res.user/1'
print s.get(user_url + '?fields_names=name&fields_names=email').json()
{u'email': None, u'name': u'Administrator', u'id': 1}
PUT |
Update the given resource |
# Change the email of the user
headers = {'content-type': 'application/json'}
user_data = s.put(user_url, data=json.dumps({'email': 'admin@example.com'}), headers=headers).json()
print user_data['email']
admin@example.com
DELETE |
Delete the given record |
# get a new list of all users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}, {u'rec_name': u'Thomas', u'id': 3}, {u'rec_name': u'Alfred', u'id': 4}]}
# delete user Alfred with ID 4
print s.delete(BASE_PATH + '/model/res.user/4')
<Response [205]>
# get a new list of all users
print s.get(BASE_PATH + '/model/res.user').json()
{u'items': [{u'rec_name': u'Administrator', u'id': 1}, {u'rec_name': u'Thomas', u'id': 3}]}
Metadata
Release files for tryton-restful 0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tryton-restful-0.1.tar.gz | 6.9 kB | Details |
Release files / tryton-restful-0.1.tar.gz
| Download URL | tryton-restful-0.1.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30dae8d6fc282b070b9a4d1c9f7e1c1d7510b6f98c2350cfbe1021dc78ce5325
|
|
BLAKE2b-256 checksum How to use checksums |
9f3edd488f655489e2b935485f53b16aa491342072ae091bff13935c6ebbde32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |