# odoorpc.env

Supply the `Environment` class to manage records more efficiently.

class odoorpc.env.Environment(odoo, db, uid, context)

  An environment wraps data like the user ID, context or current database name, and provides an access to data model proxies.

      >>> import odoorpc
      >>> odoo = odoorpc.ODOO('localhost')
      >>> odoo.login('db_name', 'admin', 'password')
      >>> odoo.env
      Environment(db='db_name', uid=1, context={'lang': 'fr_FR', 'tz': 'Europe/Brussels', 'uid': 1})

  __contains__(model)

    Check if the given model exists on the server.

        >>> 'res.partner' in odoo.env
        True

    Returns:

      True or False

  __getitem__(model)

    Return the model class corresponding to model.

        >>> Partner = odoo.env['res.partner']
        >>> Partner
        Model('res.partner')

    Returns:

      a `odoorpc.models.Model` class

  property context

    The context of the user connected.

        >>> odoo.env.context
        {'lang': 'en_US', 'tz': 'Europe/Brussels', 'uid': 2}

  property db

    The database currently used.

        >>> odoo.env.db
        'db_name'

  property lang

    Return the current language code.

        >>> odoo.env.lang
        'en_US'

  ref(xml_id)

    Return the record corresponding to the given xml_id (also called external ID). Raise an `RPCError` if no record is found.

        >>> odoo.env.ref('base.lang_en')
        Recordset('res.lang', [1])

    Returns:

      a `odoorpc.models.Model` instance (recordset)

    Raise:

      `odoorpc.error.RPCError`

  property registry

    The data model registry. It is a mapping between a model name and its corresponding proxy used to generate records. As soon as a model is needed the proxy is added to the registry. This way the model proxy is ready for a further use (avoiding costly RPC queries when browsing records through relations).

        >>> odoo.env.registry
        {}
        >>> odoo.env.user.company_id.name   # 'res.users' and 'res.company' Model proxies will be fetched
        'YourCompany'
        >>> from pprint import pprint
        >>> pprint(odoo.env.registry)
        {'res.company': Model('res.company'), 'res.users': Model('res.users')}

    If you need to regenerate the model proxy, simply delete it from the registry:

        >>> del odoo.env.registry['res.company']

    To delete all model proxies:

        >>> odoo.env.registry.clear()
        >>> odoo.env.registry
        {}

  property uid

    The user ID currently logged.

        >>> odoo.env.uid
        1

  property user

    Return the current user (as a record).

        >>> user = odoo.env.user
        >>> user
        Recordset('res.users', [2])
        >>> user.name
        'Mitchell Admin'

    Returns:

      a `odoorpc.models.Model` instance

    Raise:

      `odoorpc.error.RPCError`