Skip to content

Instantly share code, notes, and snippets.

@yasmanycastillo
Created August 17, 2018 17:52
Show Gist options
  • Save yasmanycastillo/215040e2792809b58e16484540981bf1 to your computer and use it in GitHub Desktop.
Save yasmanycastillo/215040e2792809b58e16484540981bf1 to your computer and use it in GitHub Desktop.
Odoo external api
import xmlrpc.server as Server
import ssl
class Utils(object):
def __init__(self, host, db_name, user, password):
ssl.match_hostname = lambda cert, hostname: True
self._host = host
self._db = db_name
self._user = user
self._pwd = password
common = Client.ServerProxy('{}/xmlrpc/2/common'.format(self._host), allow_none=True)
self._uid = common.authenticate(self._db, self._user, self._pwd, {})
self._server = Client.ServerProxy('{}/xmlrpc/2/object'.format(self._host), allow_none=True)
def search(self, model, domain):
result = self._main_server.execute_kw(
self._db, self._uid, self._pwd, model, 'search', [domain])
return result
def search_read(self, model, domain, list_of_fields, limit=False):
result = self._main_server.execute_kw(
self._db, self._uid, self._pwd, model, 'search_read', [domain],
{'fields': list_of_fields, 'limit': limit})
return result
def create(self, model, vals):
result = self._main_server.execute_kw(
self._db, self._uid, self._pwd, model, 'create', [vals])
return result
def write(self, model, id, vals):
result = self._main_server.execute_kw(
self._db, self._uid, self._pwd, model, 'write', [id, vals])
return result
"""
Como usar los metodos
partner_id = self.create('res.partner', {'name': 'Odoo Dominicana'}) -> Devuelde el id del nuevo record
partner_id = self.search('res.partner', [('name', '=', 'Odoo Dominicana')]) -> Devuelve una lista con los registros encontrados
products = self.search_read('product.product', [('default_code', '=', 'TR-5262')], ['name', 'default_code', 'qty_available', 'active']) -> Devuelve una lista de diccionarios
product_id = self.write('product.product', [2568], {'default_code': 'TR-5684'}) -> Devuelve una lista con el id
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment