<record id="portal_project_rule" model="ir.rule">
<field name="name">Project: portal users: public, portal or following</field>
<field name="model_id" ref="project.model_project_project"/>
- <field name="domain_force">['|',
- ('privacy_visibility', 'in', ['public', 'portal']),
- '&',
- ('privacy_visibility', '=', 'followers'),
- ('message_follower_ids', 'in', [user.partner_id.id]),
- ]</field>
+ <field name="domain_force">[
+ '|',
+ '|',
+ ('privacy_visibility', '=', 'public'),
+ '&',
+ ('privacy_visibility', '=', 'portal'),
+ ('message_follower_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
+ '&',
+ ('privacy_visibility', '=', 'followers'),
+ ('message_follower_ids', 'in', [user.partner_id.id])
+ ]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
<record model="ir.rule" id="project.task_visibility_rule">
<field name="name">Project/Task: employees: public, portal, employee or (followers and following)</field>
- <field name="domain_force">['|',
- ('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']),
- '&',
- ('project_id.privacy_visibility', '=', 'followers'),
- ('message_follower_ids', 'in', [user.partner_id.id]),
- ]</field>
+ <field name="domain_force">[
+ '|',
+ ('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']),
+ '|',
+ '&',
+ ('project_id.privacy_visibility', '=', 'followers'),
+ ('project_id.message_follower_ids', 'in', [user.partner_id.id]),
+ '|',
+ ('message_follower_ids', 'in', [user.partner_id.id]),
+ ('user_id', '=', user.id)
+ ]</field>
</record>
<record id="portal_task_rule" model="ir.rule">
<field name="name">Project/Task: portal users: public or (portal and colleagues following) or (followers and following)</field>
<field name="model_id" ref="project.model_project_task"/>
- <field name="domain_force">['|', '|',
- ('project_id.privacy_visibility', 'in', ['public']),
- '&',
- ('project_id.privacy_visibility', '=', 'portal'),
- ('message_follower_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
- '&',
- ('project_id.privacy_visibility', '=', 'followers'),
- ('message_follower_ids', 'in', [user.partner_id.id]),
- ]</field>
+ <field name="domain_force">[
+ '|',
+ '|',
+ '|',
+ ('project_id.privacy_visibility', '=', 'public'),
+ '&',
+ ('project_id.privacy_visibility', '=', 'portal'),
+ ('project_id.message_follower_ids', 'child_of', [user.partner_id.commercial_partner_id.id]),
+ '&',
+ ('project_id.privacy_visibility', '=', 'followers'),
+ ('project_id.message_follower_ids', 'in', [user.partner_id.id]),
+ '&',
+ # on employee project can receive messages but not access the object
+ ('project_id.privacy_visibility', '!=', 'employees'),
+ ('message_follower_ids', 'in', [user.partner_id.id])
+ ]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>