Menu

La classe Environment dans Odoo

L'environnement dans Odoo est un objet qui stocke diverses données contextuelles utilisées par le ORM. Ces données comprennent :

  • L'utilisateur actuel (user)
  • Le curseur (cr)
  • Le drapeau superutilisateur (su)
  • Le contexte (context)

1. Fonctions prédéfinies

env.ref(xml_id, raise_if_not_found=True)

Il renverra l'enregistrement correspondant à l'identifiant XML.

Exemple

>>> self.env.ref('base.user_admin')
res.users(2,)
                        

env.user

Il renverra l'utilisateur actuel de l'environnement. La sortie renvoyée sera un enregistrement de res.users.

env.lang

Il renverra le code de langue pour l'environnement actuel. Il sera de type chaîne de caractères.

env.company

Il renverra l'entreprise actuelle et sera un enregistrement du modèle res.company.

env.companies

Renvoyer un ensemble d'enregistrements des entreprises activées par l'utilisateur.

2. Modifiant l'environnement

with_context([context][, **overrides]) → records

Cette méthode crée une nouvelle version de cet ensemble d'enregistrements avec un contexte supplémentaire.

# current context is  {'key1': True}
result1 = records.with_context({}, key2=True)
# result1._context is {'key2': True}
result2 = records.with_context(key2=True)
# result2._context is {'key1': True, 'key2': True}
                        

with_user(user)

Renvoie une nouvelle version de cet ensemble d'enregistrements en mode non-superutilisateur connecté à celui spécifié, sauf si l'utilisateur est le superutilisateur.

with_company(company)

Renvoie une nouvelle version de cet ensemble d'enregistrements avec un contexte modifié, de sorte que :

result.env.company = company
result.env.companies = self.env.companies | company
                        

with_env(env)

Renvoie une nouvelle version de cet ensemble d'enregistrements attachée à l'environnement fourni.

3.SQL Execution

Le curseur pour la transaction de base de données actuelle est représenté par l'attribut cr sur les environnements.

Il vous permet d'exécuter directement du SQL au lieu d'utiliser le ORM, ce qui est utile pour des requêtes difficiles à définir avec le ORM (par exemple, des jointures complexes) ou pour des raisons de performance :

self.env.cr.execute("some_sql", params)
                        
Partager cette publication
Les hooks pour les modules Odoo