Skip to content

Instantly share code, notes, and snippets.

@spout
Created March 29, 2023 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spout/ccd55a14137f5241e6aa2888eb49b49a to your computer and use it in GitHub Desktop.
Save spout/ccd55a14137f5241e6aa2888eb49b49a to your computer and use it in GitHub Desktop.
Odoo API model helper/wrapper
ODOO_DATABASE='odoo'
ODOO_HOST='http://localhost:8069'
ODOO_API_USERNAME='admin@example.com'
ODOO_API_PASSWORD='secret'
#!/usr/bin/env python3
from pprint import pprint
from odoo_api_model import OdooApiModel
sale_order_model = OdooApiModel('sale.order')
[sale_order] = sale_order_model.search_read([], {'limit': 1})
pprint(sale_order)
import xmlrpc.client
from dotenv import dotenv_values
class OdooApiModel():
def __init__(self, model_name=None):
self.config = dotenv_values('.env')
self.url = self.config.get('ODOO_HOST')
self.db = self.config.get('ODOO_DATABASE')
self.username = self.config.get('ODOO_API_USERNAME')
self.password = self.config.get('ODOO_API_PASSWORD')
if model_name:
self.model_name = model_name
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(self.url))
self.uid = common.authenticate(self.db, self.username, self.password, {})
self.models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(self.url))
def execute_kw(self, method, args, kw = {}):
return self.models.execute_kw(self.db, self.uid, self.password, self.model_name, method, args, kw)
def search(self, args, kw = {}):
return self.execute_kw('search', args, kw)
def search_count(self, args, kw = {}):
return self.execute_kw('search_count', args, kw)
def fields_get(self, args, kw = {}):
return self.execute_kw('fields_get', args, kw)
def search_read(self, args, kw = {}):
return self.execute_kw('search_read', args, kw)
def create(self, args, kw = {}):
return self.execute_kw('create', args, kw)
def write(self, args, kw = {}):
return self.execute_kw('write', args, kw)
def unlink(self, args, kw = {}):
return self.execute_kw('unlink', args, kw)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment