Change the user’s context

Odoo uses the user’s context to adapt the results of some queries like:
  • reading/updating the translatable fields (english, french…),

  • reading/updating the date fields following the user’s timezone

  • change the behavior of a method/query according to the context keys

Global context

Changing this context can be done globally by updating the context:

>>> odoo.env.context['lang'] = 'en_US'
>>> odoo.env.context['tz'] = 'Europe/Paris'

From now all queries will be performed with the above updated context.

Model/recordset context

The context can also be updated punctually with the with_context method on a model or a recordset (without impacting the global context). For instance to update translations of a recordset:

>>> Product = odoo.env['product.product']
>>> product_en = Product.browse(1)
>>> product_en.env.lang
'en_US'
>>> product_en.name = "My product"  # Update the english translation
>>> product_fr = product_en.with_context(lang='fr_FR')
>>> product_fr.env.lang
'fr_FR'
>>> product_fr.name = "Mon produit" # Update the french translation

Or to retrieve all records (visible records and archived ones):

>>> all_product_ids = Product.with_context(active_test=False).search([])

Next step: Download reports