Skip to main content

s6r-odoo

Installation

    pip install s6r-odoo

Usage

from s6r_odoo import OdooConnection

odoo = OdooConnection(url='http://odoo.localhost',
                          dbname='odoo',
                          user='admin',
                          password='admin')
res_partner = odoo.model('res.partner')
partner_ids = res_partner.search([],  fields=['name', 'email'])
for partner_id in partner_ids:
    print(f'{partner_id.name} : {partner_id.email}')

JSON-2 API (Odoo 19+)

Starting with Odoo 19, the library uses the JSON-2 API instead of XML-RPC. The password parameter must be an API key (not a user password).

from s6r_odoo import OdooConnection

odoo = OdooConnection(url='https://myodoo.example.com',
                          dbname='mydb',
                          user='admin',
                          password='your_api_key_here',
                          version=19)

For Odoo versions < 19, the library continues to use XML-RPC with the user password as before.

Generating an API key

API keys can be created from the Odoo web interface: Settings > Users > Select user > API Keys tab > New API Key

How it works

XML-RPC (Odoo <= 18) JSON-2 (Odoo >= 19)
Endpoint /xmlrpc/2/object /json/2/<model>/<method>
Auth uid + password per call Authorization: bearer <api_key> header
Database Passed in every call X-Odoo-Database header
Arguments Positional Named (JSON body)

All existing methods (search, read, write, create, unlink, load, fields_get, read_group, etc.) work transparently with both protocols.

Testing in local environment

Setup environment

To run the tests locally, first install pytest in your venv

pip install --upgrade pytest pytest-env
# pytest-env is an optional package to handle .env variables

Then from the repository root directory, install the s6r-odoo module in editable mode in your venv:

pip install -e ./

Edit /tests/pytest.ini to setup the tests config file

[pytest]
log_cli=true
log_level=WARNING
;WARNING produces a very nice and readable output, use DEBUG or INFO if you need to catch odoo-configurator logs or test logs 
log_format = %(asctime)s %(levelname)s %(message)s
log_date_format = %Y-%m-%d %H:%M:%S
env =
    ODOO_V16_PASSWORD=
    ODOO_V17_PASSWORD=
    ODOO_V18_PASSWORD=
    ODOO_V19_API_KEY=
; You need to fill these password/api_key env variables

For now, this is where we manage the passwords to access testing Odoo instances.

Run the tests

Go to the /tests directory cd tests, then just run:

pytest

If you are using Pycharm, this article explains in details the configuration: https://pytest-with-eric.com/integrations/pytest-pycharm-integration/#Configuring-PyCharm-for-Pytest-Optional

License

This project is licensed under the GNU Lesser General Public License (LGPL) Version 3.

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.

Contributors

Maintainer

This software is maintained by Scalizer.

Scaliser

Metadata

Release files for s6r-odoo 2.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for s6r-odoo 2.3.1
File Size Uploaded
s6r_odoo-2.3.1.tar.gz 31.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for s6r-odoo 2.3.1
File Interpreter ABI Platform
s6r_odoo-2.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 56.2 kB

Release files / s6r_odoo-2.3.1.tar.gz

Download URL s6r_odoo-2.3.1.tar.gz
Size 31.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6b5361da528c463a467088a99cf719170cb0c208bcbe2a6da7c3f9717e70316b
BLAKE2b-256 checksum
How to use checksums
ed8ac18b636c69398035d37f362402e72eee5a75b59164fc6790b6dc84838a6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / s6r_odoo-2.3.1-py3-none-any.whl

Download URL s6r_odoo-2.3.1-py3-none-any.whl
Size 24.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
81d6e8ce89aa40d1e316fe487f08c5e6ad30e387a5135933cabf5208e99bcd10
BLAKE2b-256 checksum
How to use checksums
d93ba0c241c362441d8f6e598cece8405b41bd7a881ef03a1f036159a98eca7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

2.3.1 This release

2 release files

2.3.0

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.9

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page