User Manager Task's Work on Tasks Time Estimation on Tasks Project: multi-company ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id]), ] Project: project manager: see all [(1, '=', 1)] Project: employees: portal, employees or followers ['|', ('privacy_visibility', 'in', ['portal', 'employees']), ('message_partner_ids', 'in', [user.partner_id.id]) ] Project/Task: multi-company ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id]), ] Project/Task: employees: portal or employee or (followers and following) [ '|', ('project_id.privacy_visibility', 'in', ['portal', 'employees']), '|', '&', ('project_id.privacy_visibility', '=', 'followers'), ('project_id.message_partner_ids', 'in', [user.partner_id.id]), '|', ('message_partner_ids', 'in', [user.partner_id.id]), # to subscribe check access to the record, follower is not enough at creation ('user_id', '=', user.id) ] Project/Task: project manager: see all [(1, '=', 1)] Project: portal users: portal or following [ '|', '&', ('privacy_visibility', '=', 'portal'), ('message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]), '&', ('privacy_visibility', '=', 'followers'), ('message_partner_ids', 'in', [user.partner_id.id]) ] Project/Task: portal users: (portal and colleagues following) or (followers and following) [ '|', '|', '&', ('project_id.privacy_visibility', '=', 'portal'), ('project_id.message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]), '&', ('project_id.privacy_visibility', '=', 'followers'), ('project_id.message_partner_ids', 'in', [user.partner_id.id]), '&', # on employee project can receive messages but not access the object ('project_id.privacy_visibility', '!=', 'employees'), ('message_partner_ids', 'in', [user.partner_id.id]) ]