# 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

  `context`

    The context of the user connected.

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

  `db`

    The database currently used.

        >>> odoo.env.db
        'db_name'

  `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`

  `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
        {}

  `uid`

    The user ID currently logged.

        >>> odoo.env.uid
        1

  `user`

    Return the current user (as a record).

        >>> user = odoo.env.user
        >>> user
        Recordset('res.users', [1])
        >>> user.name
        'Administrator'

    Returns: | a `odoorpc.models.Model` instance
    Raise: | `odoorpc.error.RPCError`