Skip to main content

Simple RPC client for Odoo

Project description

Odoo Connect

A simple library to use Odoo RPC.

PyPI version

Usage

import odoo_connect
odoo = env = odoo_connect.connect(url='http://localhost', username='admin', password='admin')
so = env['sale.order']
so.search_read([('create_uid', '=', 1)], [])

Rationale

OdooRPC or Odoo RPC Client are both more complete and mimic internal Odoo API. Then aio-odoorpc provides an asynchronous API.

This library provides only a simple API for connecting to the server and call methods, so the maintenance should be minimal.

Note that each RPC call is executed in a transaction. So the following code on the server, will add one to every line ordered quantity or fail and do nothing. However, ORM client libraries will perform multiple steps, on a failure, already executed code was committed. You can also end with race conditions where some other code set product_uom_qty to 0 before you increment it.

lines = env['sale.order.line'].search([
	('order_id.name', '=', 'S00001')
])
for line in lines:
	if line.product_uom_qty > 1:
		line.product_uom_qty += 1

Export and import data

A separate package provides utilities to more easily extract data from Odoo. It also contains utility to get binary data (attachments) and reports.

The following function will return a table-like (list of lists) structure with the requested data. You can also pass filter names or export names instead of, respectively, domains and fields. Note that this doesn't support groupping.

# Read data as usual
env['sale.order'].search_read_dict([('state', '=', 'sale')], ['name', 'partner_id.name'])
env['sale.order'].read_group([], ['amount_untaxed'], ['partner_id', 'create_date:month'])

# Export data
import odoo_connect.data as odoo_data
so = env['sale.order']
data = odoo_data.export_data(so, [('state', '=', 'sale')], ['name', 'partner_id.name'])
odoo_data.add_url(so, data)

# Import data using Odoo's load() function
odoo_data.load_data(so, data)

# Import data using writes and creates (or another custom method)
for batch in odoo_data.make_batches(data):
	# add ids by querying the model using the 'name' field
	odoo_data.add_fields(so, batch, 'name', ['id'])
	# if you just plan to create(), you can skip adding ids
	odoo_data.load_data(partner, batch, method='write')

Development

You can use a vscode container and open this repository inside it. Alternatively, clone and setup the repository manually.

git clone $url
cd odoo-connect
# Install dev libraries
pip install -r requirements.txt
./pre-commit install
# Run some tests
pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo-connect-0.1.3.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odoo_connect-0.1.3-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file odoo-connect-0.1.3.tar.gz.

File metadata

  • Download URL: odoo-connect-0.1.3.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for odoo-connect-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6eae2b530bab101ece1bdd0362e37b1e36ae9ed27aecaaa801e85b95f0486a37
MD5 bf710efc9ae56c196566e10fc3476e0b
BLAKE2b-256 41490b72ef5f8faa87677f6d4116d6c994648c28e34555fd5ac2783b2cf9325a

See more details on using hashes here.

File details

Details for the file odoo_connect-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: odoo_connect-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for odoo_connect-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 65518a6aa589c456adb63073babebe79663cd7c1b956da1a611e45953f213aef
MD5 46931af7b74e5a4cf09a698b87509279
BLAKE2b-256 c21737dfeef54deab46231c80a5674d7787871ba16285d191495a68f82bac907

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page