The process of creating security groups involves defining sets of users with shared access permissions. All security-related files are typically organized within the security directory, and the path to these files is specified in the __manifest__.py file:
'data': [
'security/ir.model.access.csv',
'security/security.xml',
],
To create a security group, an XML file is generated for the group definition. This involves creating a record in the res.groups model. Here's an example:
<record id="school_management_student" model="res.groups">
<field name="name">Student</field>
<field name="category_id" ref="school_management.school_management_accesss"/>
<field name="implied_ids" eval="[(4, ref('group_event_user')), (4, ref('mail.group_mail_template_editor'))]"/>
</record>
In this XML record:
- id: A unique identifier for the record, distinct for each group in the res.groups table.
- name: The user-friendly name of the group displayed in the user interface.
- category_id: Refers to the category to which this group belongs, requiring the creation of a corresponding record in the ir.module.category model.
- implied_ids: A group that inherits other groups, will get all the other groups' rights on top of their own. The model behind is res. groups.
Creating the module category record:
<record model="ir.module.category" id="school_management_accesss">
<field name="name">School Management</field>
</record>
Here, the category record includes the name "School Management."
These groups can also be utilized in ir.model.access.csv files as needed. An example of referencing the group in such a file:
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_test_model,access_test_model,model_test_model,school_management.school_management_student,1,0,0,0
In this ir.model.access.csv file, the group_id/id references the previously created security group.
To access groups from the user interface in Odoo 17, activate the debug mode and navigate to "General Settings -> Users & Companies -> Groups." This section displays all the groups created in the database.
To form new user groups, initiate the process by clicking on the 'New' button, which will prompt the display of a form view, as illustrated below.