Hola, aquí un pequeño tutorial de como configurar una API REST para conectarse con Odoo, esto está basado en las librerías hechas por nuestros amigos de DOMATIX .
Instalación:
- Vamos a instalar sobre VirtualEnv
sudo pip install virtualenv - Creamos nuestro proyecto en VirtualEnv
virtualenv odooapi - Activamos el entorno VirtualEnv para odooapi
source odooapi/bin/activate - Instalamos librerías extras
pip install flask
pip install odoorpc
pip install flask_restful
pip install flask-httpauth - Descargamos la librería que nos permitirá general
git clone https://gitlab.com/domatix/odoo-rest.git - Editamos el archivo odoo-res/common/tools.py y reemplazamos la linea 5 (from flask.ext.httpauth import HTTPBasicAuth) por:
from flask_httpauth import HTTPBasicAuth - Ingresamos a la carpeta odoo-res y ejecutamos
python odoo_rest.py - Nos vamos a un navegador Web:
localhost:5000
Configuración para el uso del Api-Rest en Odoo:
- Estando activo nuestro entorno VirtualEnv no ubicamos dentro de la carpeta odoo-res y editamos el archivo config.py con los datos de nuestro servidor Odoo:
ODOO_SERVER = ‘127.0.0.1’
ODOO_PORT = ‘8069’
ODOO_DB = ‘RESAPI’ - Dentro del directorio odoo-res hacemos una copia del directorio resources.sample a resources incluyendo el contenido
- Dentro del archivo odoo-rest/common/resources/res_users.py vemos la ruta:
api.add_resource(ResUsersList, ‘/res_users’) - Iniciamos la API
python odoo_rest.py - Ingresamos a un navegador y colocamos:
http://localhost:5000/res_users
Colocamos los accesos a odoo
En este caso nos muestra el listado de ids de los usuarios:
Formas de obtener los datos:
http://localhost:5000/products
http://localhost:5000/products/1?fields=all
http://localhost:5000/products?limit=2&fields=[‘name’,’list_price’]
http://localhost:5000/products?limit=2&fields=all
http://localhost:5000/products?fields=all&domain=[(«default_code»,»=»,»00000″)]
Podemos hacer uso de la librería requests en python para cosumir dichos recursos, algunos ejemplos:
import requests #from requests.auth import HTTPBasicAuth #Consulta #clientes= requests.get('http://localhost:5000/sale_order/1?fields=all', auth=HTTPBasicAuth('admin', 'admin'), headers={'Content-type': 'application/json'}) clientes= requests.get('http://localhost:5000/sale_order/1?fields=all', auth=('admin', 'admin'), headers={'Content-type': 'application/json'}) print clientes.json() #Creacion de partner data='{"name": "Huber Salazar","email": "huber@me.com" }' headers={'Content-type': 'application/json'} auth=('admin', 'admin') partner=requests.post('http://localhost:5000/res_partner', auth=auth, data=data, headers=headers) print partner.json() #Crear Factura data='{"partner_id":7,"date_invoice": "2017-10-05", "type": "out_invoice", "account_id":62, "journal_id":1}' headers={'Content-type': 'application/json'} auth=('admin', 'admin') invoice=requests.post('http://localhost:5000/account_invoice', auth=auth, data=data, headers=headers) inv=invoice.json() print inv #Creando lineas data='{"invoice_id": %s, "name": "Producto de prueba", "quantity": 20,"price_unit": 300, "account_id": 1664}' %(int(inv['id'])) headers={'Content-type': 'application/json'} auth=('admin', 'admin') invoice_line=requests.post('http://localhost:5000/account_invoice_line', auth=auth, data=data, headers=headers) print invoice_line.json()
Mas informacion:
https://gitlab.com/domatix/odoo-rest/tree/master
1 comentario
Oswaldo · 13/05/2019 a las 4:50 pm
Hola estimado, consulta
estoy haciendo una inserción pero me sale erro 400
como puedo ver donde estoy fallando