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).

Deja un comentario

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

*

code