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:

  1. Vamos a instalar sobre VirtualEnv
    sudo pip install virtualenv
  2. Creamos nuestro proyecto en VirtualEnv
    virtualenv odooapi
  3. Activamos el entorno VirtualEnv para odooapi
    source  odooapi/bin/activate
  4. Instalamos librerías extras
    pip install flask
    pip install odoorpc
    pip install flask_restful
    pip install flask-httpauth
  5. Descargamos la librería que nos permitirá general
    git clone https://gitlab.com/domatix/odoo-rest.git
  6. 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
  7. Ingresamos a la carpeta odoo-res y ejecutamos
    python odoo_rest.py
  8. Nos vamos a un navegador Web:
    localhost:5000

Configuración para el uso del Api-Rest en Odoo:

  1. 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’
  2. Dentro del directorio odoo-res hacemos una copia del directorio resources.sample a resources incluyendo el contenido
  3. Dentro del archivo  odoo-rest/common/resources/res_users.py vemos la ruta:
    api.add_resource(ResUsersList, ‘/res_users’)
  4. Iniciamos  la API
    python odoo_rest.py
  5. 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

 


Javier Salazar Carlos

Soy Ingeniero de Ingeniería de Sistemas, egresado de la Universidad Nacional del Callao, especialista en Tecnologías de la Información y de las Comunicaciones (TICs).

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

code