Publicidad

martes, 5 de agosto de 2014

Como Consumir el Web Service de Odoo (OpenERP)

Consumiendo el WebServices de Odoo con Python





    Muchos sabemos ó en ocasiones desconocemos como trabaja el Sistema Odoo (OpenERP), para poder comunicar la plataforma creada en Python con nuestros Navegadores convencionales, bien pues esto lo hace graciad a los Web Services y los protocolos XML-RPC y NET-RPC, el protocolo XML-RPC, se encarga de las transacciones Web y toda la parte de los Navegadores, el protocolo NET-RPC, se utilizaba anteriormente en la version 6.1 de OpenERP hacia atras para poder utilizar un Cliente de Escriorio (GTK), que era una alternativa para los Navegadores y tenia una completa integracion con el Sistema, a partir de la version 7.0 de OpenERP se elimina este Cliente y se vuelve completamente Web.

    Ahora como mencione anteriormente, utilizaremos el XML-RPC para poder consumir este Web Services utilizando un programa externo en Python, que permitira crear registros en Clientes/Proveedores (res.partner) de OpenERP.

1. Lo primero es crear un Archivo WebServices.py
2. Ahora Importamos las librerias principales para trabajar con Web Services en Python:
from SimpleXMLRPCServer import SimpleXMLRPCServer
import os
import sys
import subprocess
import string
import xmlrpclib
2. Necesitaremos crear algunas variables para poder trabajar mas facilmente nuestro Web Services:
HOST='localhost' 
PORT=8069
DB='DM3' 
USER='admin'
PASS='admin'
url = 'http://%s:%d/xmlrpc/' % (HOST,PORT) 

HOST= Es la direccion del Servidor de Odoo (OpenERP)
PORT= Es el puerto que esta ejecutando el Servidor de Odoo (OpenERP)
DB= La base de datos que vamos a utilizar para ejecutar este Web Servicess.
USER= Un usario de la Base, por default admin.
PASS= La contraseña del Usuario anterior.
URL= Estamos construyendo una URL para poder consumir el Web Services.
3.Para ejecutar el Web Services creamos las siguientes variables:
common_proxy = xmlrpclib.ServerProxy(url+'common') 

object_proxy = xmlrpclib.ServerProxy(url+'object') 
4. Para estandarizar la ejecución del Web Services creamos el siguiente metodo:
def execute(*args): 
    return object_proxy.execute(DB,uid,PASS,*args)
5. Probamos que estemos conectados a la base de datos:
uid = common_proxy.login(DB,USER,PASS)
print "Logeado como  %s (uid:%d)" % (USER,uid)
Nos retorna el Usuario y el ID asignado en la base de datos.
6. Ahora empezamos a consumir el Web Services, como dije al inicio crearemos un registro:
partner_id = execute('res.partner','create',{'name':'PonceSoft Blogspot','is_company':True,'customer':True})
print "#### ID DEL NUEVO CLIENTE >>>> ", partner_id

Eso es todo por el momento, dudas ó comentarios son bien recibidos! 

“Una mentalidad positiva te ayuda a triunfar. Piensa bien, para vivir mejor”

4 comentarios:

  1. buen aporte .. funciona para crear un cliente ... en consol o terminal buenisimo solo faltaria avanzar y usar los workflowa

    ResponderEliminar
    Respuestas
    1. Se puede hacer uso de los WorkFlow con la libreria oerplib.

      Eliminar
  2. Pregunta es posible hacer una replica de datos utilizando esta libreria, es decir su tengo 2 DB's en openerp y hago una venta en una base, esta se puede reflejar en la otra base de datos?

    ResponderEliminar
    Respuestas
    1. Podria ser posible mediante este metodo, o directamente modifican el orm para poder realizar las inserciones en las 2 bases de datos y utilizando la libreria psycopg2.

      Eliminar