Como ejecutar un Método desde un Web Services Python
Anteriormente hable un poco sobre como utilizar los Web Services de Odoo desde aplicaciones externas como Python Django, ahora quiero compartir como ejecutar un método no propio del FrameWork( Create, Unlink, Copy, Search, Write, Read), si no ejecutar un metodo de una clase X, por ejemplo el método Confirmar Pedido de Venta desde una conexión Web Service Python.
La sintaxis es la siguiente:
import xmlrpclibdbname = "Mi_Base"username = "admin"pwd = "admin"sock_common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/common')uid = sock_common.login(dbname, username, pwd)sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')res = sock.execute(dbname, username, pwd, 'sale.order', 'action_button_confirm', [1])print '############ Resultado >>>>> ',res
print " Ejecución Finalizada ... "
Como podemos observar, es necesario Indicar la Base de Datos, Usuario y Contraseña de admin o algún usuario con los permisos sobre la clase que vamos a trabajar y al final enfocarnos en los IDS del metodo a ejecutar, en el ejemplo anterior mande el registro 1 de la tabla sale_order.
Tengo un problema... "[Errno 13] Permission denied" al ejecutar uid=common.authenticate(database_name,user,key,{})
ResponderBorrarNo se que podrá ser... estoy en un servidor RedHat con Httpd, creo que me falta activar algo pero no se que exactamente.
Hola Luis, al parecer modificaron el Web Service en Odoo 8 y 9, prueba con lo siguiente:
Borrarurl =
db =
username = 'admin'
password =
import xmlrpclib
info = xmlrpclib.ServerProxy('https://demo.odoo.com/start').start()
url, db, username, password = \
info['host'], info['database'], info['user'], info['password']
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
common.version()
uid = common.authenticate(db, username, password, {})
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
models.execute_kw(db, uid, password,
'res.partner', 'check_access_rights',
['read'], {'raise_exception': False})
Espero te sirva de ayuda la fuente de esta informacion es : https://www.odoo.com/documentation/9.0/api_integration.html
Saludos