+91-903-347-2982   |    +91-987-935-4457   |    contact@serpentcs.com
serpentcs certifications and recognization

Field-level access control in OpenERP 7.0

October 25, 2012 by
Field-level access control in OpenERP 7.0

New in version 7.0.
 Field-level access control in OpenERP 7.0
OpenERP now supports real access control at the field level, not just on the view side. Previously it was already possible to set a groups attribute on a <field> element (or in fact most view elements), but with cosmetics effects only: the element was made invisible on the client side, while still perfectly available for read/write access at the RPC level. As of OpenERP 7.0 the existing behavior is preserved on the view level, but a new groups attribute is available on all model fields, introducing a model-level access control on each field. The syntax is the same as for the view-level attribute:
_columns = {
    'secret_key': fields.char('Secret Key', groups="base.group_erp_manager,base.group_system")
 }

There is a major difference with the view-level groups attribute: restricting the access at the model level really means that the field will be completely unavailable for users who do not belong to the authorized groups:
  • Restricted fields will be completely removed from all related views, not just hidden. This is important to keep in mind because it means the field value will not be available at all on the client side, and thus unavailable e.g. for on_change calls.
  • Restricted fields will not be returned as part of a call to fields_get() or fields_view_get() This is in order to avoid them appearing in the list of fields available for advanced search filters, for example. This does not prevent getting the list of a model’s fields by querying ir.model.fields directly, which is fine.
  • Any attempt to read or write directly the value of the restricted fields will result in an AccessError exception.
  • As a consequence of the previous item, restricted fields will not be available for use within search filters (domains) or anything that would require read or write access.
  • It is quite possible to set groups attributes for the same field both at the model and view level, even with different values. Both will carry their effect, with the model-level restriction taking precedence and removing the field completely in case of restriction.
Note The tests related to this feature are in openerp/tests/test_acl.py.
Warning At the time of writing the implementation of this feature is partial and does not yet restrict read/write RPC access to the field. The corresponding test is written already but currently disabled. Courtesy : OpenERP Docs