Skip to main content

Python client library for Odoo and the OpenStack integration add-on.

Project description

OpenStack Odoo Client Library for Python

PyPI PyPI - Python Version GitHub Test Status

This is an Odoo client library for Python with support for the OpenStack Integration add-on, intended to be used by OpenStack projects such as Distil.

This library provides a higher level interface than OdooRPC (which is used internally), and is intended to make it possible to develop applications against a well-defined API, without having to take into account considerations such as backward-incompatible changes between Odoo versions.

Installation

The OpenStack Odoo Client library supports Python 3.10 and later.

To install the library package, simply install the openstack-odooclient package using pip.

python -m pip install openstack-odooclient

Connecting to Odoo

To connect to an Odoo server, create an openstack_odooclient.Client object and pass the connection details to it.

openstack_odooclient.Client(
    *,
    hostname: str,
    database: str,
    username: str,
    password: str,
    protocol: str = "jsonrpc",
    port: int = 8069,
    verify: bool | str | Path = True,
    version: str | None = None,
) -> Client

This is the recommended way of creating the Odoo client object, as it provides some extra parameters for convenience.

from openstack_odooclient import Client as OdooClient

odoo_client = OdooClient(
    hostname="localhost",
    database="odoodb",
    user="test-user",
    password="<password>",
    protocol="jsonrpc",  # HTTP, or "jsonrpc+ssl" for HTTPS.
    port=8069,
    # verify=True,  # Enable/disable SSL verification, or pass the path to a CA certificate.
    # version="14.0",  # Optionally specify the server version. Default is to auto-detect.
)

If you have a pre-existing odoorpc.ODOO connection object, that can instead be passed directly into openstack_odooclient.Client.

openstack_odooclient.Client(*, odoo: odoorpc.ODOO) -> Client

This allows for sharing a single OdooRPC connection object with other code.

from odoorpc import ODOO
from openstack_odooclient import Client as OdooClient

odoo = ODOO(
    host="localhost",
    port=8069,
    protocol="jsonrpc",  # HTTP, or "jsonrpc+ssl" for HTTPS.
    # version="14.0",  # Optionally specify the server version. Default is to auto-detect.
)
odoo.login("odoodb", "test-user", "<password>")

odoo_client = OdooClient(odoo=odoo)

Managers

The Odoo client object exposes a number of record managers, which contain methods used to query specific record types, or create one or more new records of that type.

For example, performing a simple search query would look something like this:

>>> from openstack_odooclient import Client as OdooClient
>>> odoo_client = OdooClient(
...     hostname="localhost",
...     port=8069,
...     protocol="jsonrpc",
...     database="odoodb",
...     user="test-user",
...     password="<password>",
... )
>>> odoo_client.users.search([("id", "=", odoo_client.user_id)], as_id=True)
[1234]

For more information on the available managers and their functions, check the Managers page in the documentation.

Records

Record manager methods return record objects for the corresponding model in Odoo.

Record fields can be accessed as attributes on these record objects. The record classes are fully type hinted, allowing IDEs and validation tools such as Mypy to verify that your application is using the fields correctly.

>>> from openstack_odooclient import Client as OdooClient, User
>>> user: User | None = None
>>> odoo_client = OdooClient(
...     hostname="localhost",
...     port=8069,
...     protocol="jsonrpc",
...     database="odoodb",
...     user="test-user",
...     password="<password>",
... )
>>> user = odoo_client.users.get(1234)
>>> user
User(record={'id': 1234, ...}, fields=None)
>>> user.id
1234

For more information on the available managers and their functions, check the Records section in the documentation.

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

openstack_odooclient-0.2.3.tar.gz (156.9 kB view details)

Uploaded Source

Built Distribution

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

openstack_odooclient-0.2.3-py3-none-any.whl (92.2 kB view details)

Uploaded Python 3

File details

Details for the file openstack_odooclient-0.2.3.tar.gz.

File metadata

  • Download URL: openstack_odooclient-0.2.3.tar.gz
  • Upload date:
  • Size: 156.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openstack_odooclient-0.2.3.tar.gz
Algorithm Hash digest
SHA256 aec42455ef3e3e8cc0821177c7d183d89a19ba7d5cd4284877973b0be7a39621
MD5 70fc46b57d6c31411931f1e7afe6e4d1
BLAKE2b-256 18a2f455797174395e7031f1a8b47aa9cdaafd9f2c4d0b53ba8b1b8d5ed4dba1

See more details on using hashes here.

File details

Details for the file openstack_odooclient-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: openstack_odooclient-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 92.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for openstack_odooclient-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ce88706d4cc560c128ae79dca5587133cd76f2fb92fe205062d36b6a1bd44b67
MD5 e17f19de9ebdc886de5027cde420b725
BLAKE2b-256 a1a63db6e535d7291bd94562eff4cc1793265a61d6c192bcdb322969806b025e

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