Record Rules
Apart from utilizing custom code to limit access, Odoo has two main data-driven
approaches for regulating or restricting data access. The conditions that must be
met for an operation to be permitted are known as record rules. Record rules are
assessed on a record-by-record basis. Record rules are default-allow: access is
permitted if access privileges allow it, and no rule applies to the operation and
model for the user.
Record rule
There are various types of records in the business world. It's also critical to
ensure that those records are kept secure. There are also some security regulations
in Odoo. The rules specify who has access to the objects listed below. In record
rules, we describe some conditions for certain operations.
In odoo, there are four types of access modes
- Create: Access for creating the record.
- Write: Access for writing the record.
- Delete: Access for deleting the record.
- Read: Access for reading the record.
Backend code for creating the record rule
<record id="school_student_rule" model="ir.rule">
<field name="name">Student Records</field>
<field name="model_id" ref="model_school_student"/>
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('school_management.school_management_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
Here the record id is “school_student_rule” . The id is unique for each record, and that
will be on the ir.rule model.
>name: Name of the record. It is a human readable name, and which will
be shown on the user interface.
>model_id: Refers the model on which model we can using the record rule
here the model id school_student so the ref is model_school_student.
>domain_force: Domain force acts as a filter for the record. We can set
the domain for that record rule, for some particular groups. Default the domain_force is
[(1, ‘=’, 1)].
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
perm_read, perm_write, perm_create, perm_unlink are the permission for read, write,
create and edit respectively. eval=”true” means that we have the permission otherwise we
don't have the permission.
We can see the permission on the UI
Go to general Settings > Technical > Security > Record Rules