Odoo-Models-Connect is an library to improve interaction and communication with Odoo XML-RPC External API for integration with other technologies.
Install and update using pip:
$ pip install odoo-models-connect
Initialize the required environment variables
-
Create an .env file
-
places the environment variables inside the file with these names:
- DATABASE
- USERNAME
- PASSWORD
- URL
For example .env:
DATABASE='local_DB'
USERNAME='admin@email.com'
PASSWORD='123456'
URL='http://localhost:8069'
-
import load_env_vars:
from odoo_models_connect import load_env_vars
-
load environment variables:
load_env_vars('path/to/environment')
You can create a high-level interface by declaring models by extending models.OdooModel as follows:
from odoo_models_connect import models, fields, load_env_vars
load_env_vars(env_path='path/to/.env')
class ResUsers(models.OdooModel):
_name = 'res.users'
name = fields.StringField()
login = fields.StringField()
password = fields.StringField()
count of number of records:
>>> ResUsers.search_count()
4
search and read record by id:
>>> ResUsers.search_by_id(2)
<ResUsers id=2>
search and read records:
>>> ResUsers.search_read()
[<ResUsers id=2>, <ResUsers id=6>, <ResUsers id=7>, <ResUsers id=8>]
filter records:
>>> ResUsers.search_read(query=[["name", 'ilike', "John"]])
[<ResUsers id=2>, <ResUsers id=6>]
create a record:
user = ResUsers(
name='John',
login='John@mail.com',
password='john123',
)
user.create()
update a record:
user = ResUsers(
id=8,
name='John2',
login='John2@mail.com',
password='john1234',
)
user.update()
delete a record:
user = ResUsers(id=10)
user.delete()
- StringField
- BooleanField
- BinaryField
- DateField
- DateTimeField
- IntegerField
- FloatField
- MonetaryField
- Many2oneField
- Many2manyField
- One2manyField
Initialize the odoo connection:
from odoo_models_connect import ConnectOdoo
odoo = ConnectOdoo('http://localhost:8069', 'db_name')
User authentication in the odoo system:
uid = odoo.authenticate('user_email@mail.com', 'user_password')
In the case of wanting to make queries with the authenticated user in session it is necessary to use the reconnect method and pass a dictionary with the values of email, password and user id:
session = {
"username": 'user_email@mail.com',
"password": 'user_password',
"uid": 7,
}
odoo.reconnect(session)
To make a simple search of all the elements of a model is used:
users = odoo.search_read('res.users')
You can place conditions or the fields you want to bring from each element:
users = odoo.search_read('res.users', condition=[['name', '=', 'Admin']], fields=['name', 'login', 'image_1920'])
The read() method works to do a search for elements with a list of element ids:
users = odoo.read('res.users', object_ids=[1, 7, 17])
You can also bring only the fields that are needed:
users = odoo.read('res.users', object_ids=[8, 25], fields=['name', 'login'])
You can fetch the id of all the elements of a model stored in a database:
users_ids = odoo.search_ids('res.users')
You can add a condition or domain:
users_ids = odoo.search_ids('res.users', domain=[
[('name', 'ilike', 'John%')]])
The create() method is used to create an element of a model in a database.
data = {
"name": 'John',
"login": 'John@mail.com',
"password": 'john123'
}
odoo.create('res.users', data)
The update() method is used to update an element of a model in a database.
data = {
"name": 'Juan',
"login": 'Juan@mail.com',
"password": 'Juan123'
}
user_id = 9
odoo.update('res.users', user_id, data)
The delete() method is used to delete an element of a model in a database.
user_id = 9
odoo.delete('res.users', user_id)