Skip to Content
Menu
This question has been flagged
2 Replies
2001 Views

hi all seniors,

i need your expert advise, please guide is it ok or can be problematic in some cases? 

folder: security 

file name: ir_rule.xml

<odoo>

<data>

<record id="crm_lead_access_by_self_n_supervisor" model="ir.rule">

<field name="name">Lead (CRM) access by only self and supervisor</field>

<field name="model_id" ref="crm.lead"/>

<field name="domain_force">['|', '|',  ('user_id', '=', user.id), ('user_id', '=', False), ('user_id.user_ids.supervisor', '=', user.id)]</field>

<field name="groups" eval="[(4, ref('base.group_user'))]"/>

<field name="perm_read" eval="True"/>

<field name="perm_write" eval="True"/>

<field name="perm_create" eval="True"/>

<field name="perm_unlink" eval="True"/>

</record>

</data>

</odoo>

thanks in advance.

Avatar
Discard
Best Answer
The rule in your `ir_rule.xml` file looks logically sound for granting access to CRM leads based on ownership or supervisor relationship. However, there are a few considerations: ensure the `user_id.user_ids.supervisor` field is properly set, as incorrect relationships could cause issues. The permissions granted to the `base.group_user` group allow full access, so you might want to refine them for more granular control, especially for supervisors. Complex domain filters could impact performance, so ensure proper indexing. It's important to test the rule thoroughly across different user scenarios to ensure it behaves as expected


Thanks

Avatar
Discard
Best Answer

Hi,

Please refer to the code:


<odoo>

    <data>

        <record id="crm_lead_access_by_self_and_supervisor" model="ir.rule">

            <field name="name">Lead (CRM) access by self, supervisor, or unassigned</field>

            <field name="model_id" ref="crm.model_crm_lead"/>

            <field name="domain_force">

                ["|", "|",

                    ("user_id", "=", user.id),

                    ("user_id", "=", False),

                    ("user_id.parent_id", "=", user.id)

                ]

            </field>

            <field name="groups" eval="[(4, ref('base.group_user'))]"/>

            <field name="perm_read" eval="True"/>

            <field name="perm_write" eval="True"/>

            <field name="perm_create" eval="True"/>

            <field name="perm_unlink" eval="False"/>

        </record>

    </data>

</odoo>


- Use crm.model_crm_lead instead of crm.lead.

- Changed perm_unlink to False to prevent accidental deletion of leads.

- Replaced user_id.user_ids.supervisor (complex and error-prone) with user_id.parent_id (common way to define supervisor in Odoo hierarchy).


Hope it helps.




Avatar
Discard
Related Posts Replies Views Activity
1
May 24
3136
1
Nov 22
5643
2
Jul 22
4208
2
May 18
10337
2
Jul 17
7519