Skip to content

Conversation

@Callum027
Copy link
Collaborator

Remove the OpenStack Odoo Client for Python's usage of the OdooRPC library, and replace it with direct JSON RPC requests made internally using the httpx library.

Functionally, the most important change here is that we now do our own JSON encoding and decoding. This allows us to decode non-integer numbers as Decimal objects instead of floats, ensuring that number handling is as accurate as possible (on the client side anyway, Odoo still stores them as floats unfortunately).

There are other benefits, such as performance improvements from avoiding OdooRPC's ORM abstractions and other additional processing we don't need.

Callum Dickinson added 3 commits October 17, 2025 14:50
This adds support for updating records in place, using new `update` methods added to the record and record manager base classes.

The `update` method has the same smart evaluation of field names based on record classes that the `create` method has. This allows ID or object field names to be used for model refs, and field aliases.
Add a new manager for attachment records (`ir.attachment`) in Odoo.

These are intended to be used for uploading/downloading attachments to/from invoices.
Invoice attachments will then be attached to invoice emails sent out to customers.

The contents of the attachments won't be fetched when querying them from Odoo by default;
instead it is intended that the separate `download` method be used to download the attachment
contents separately. An `upload` method is also available, to provide an easier to use interface
for uploading attachments.
Remove the OpenStack Odoo Client for Python's usage of the OdooRPC library, and replace it with direct JSON RPC requests made internally using the `httpx` library.

Functionally, the most important change here is that we now do our own JSON encoding and decoding. This allows us to decode non-integer numbers as `Decimal` objects instead of floats, ensuring that number handling is as accurate as possible (on the client side anyway, Odoo still stores them as floats unfortunately).

There are other benefits, such as performance improvements from avoiding OdooRPC's ORM abstractions and other additional processing we don't need.
@Callum027 Callum027 self-assigned this Oct 30, 2025
@Callum027 Callum027 force-pushed the callum/add-attachment-support branch 3 times, most recently from 43aa7c6 to 025f474 Compare November 3, 2025 03:17
@Callum027 Callum027 force-pushed the callum/add-attachment-support branch 4 times, most recently from b803591 to 72e70f9 Compare November 12, 2025 05:31
@Callum027 Callum027 force-pushed the callum/add-attachment-support branch 6 times, most recently from 8c2be27 to 6687f46 Compare December 15, 2025 22:46
Base automatically changed from callum/add-attachment-support to main December 16, 2025 03:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants