Manager
Project Lead
['|',
('privacy_visibility', '!=', 'followers'),
('message_ids', 'in', [user.id])
]
company: Own Company
[('company_id', 'in', company_ids + [False])]
Manager: Own Projects
[('user_id', '=', user.id)]
Project/Task: project supervisor: see all tasks linked to his assigned project or its own tasks
[
('project_id.user_id','=',user.id),
'|', ('project_id', '!=', False),
('user_ids', 'in', user.id),
]
Project/Task: project users: don't see non generic tasks
[
'&', '&', '&',
('project_id', '!=', False),
('is_generic', '=', False),
('user_ids', 'not in', user.id),
('involved_user_ids', 'not in', user.id),
]
Project/Task: project lead: see all tasks
[
'&', '&', '&',
('project_id', '!=', False),
('project_id.project_lead', '=', user.id),
'|', ('is_generic', '=', True), ('is_generic', '=', False),
'|', ('user_ids', 'in', user.id), ('user_ids', 'not in', user.id)
]
[
'&',
('project_id', '!=', False),
('project_id.privacy_visibility', '!=', 'followers'),
'|',
'&',
('is_generic', '=', True),
'|', '|',
('project_id', '!=', False),
('parent_id', '!=', False),
('user_ids', 'in', user.id),
'&',
('is_generic', '=', False),
'|',
('user_ids', 'in', user.id),
('involved_user_ids', 'in', user.id),
]
[
'|',
'&',
('project_id', '!=', False),
'|', '|',
('is_generic', '=', True),
('user_ids', 'in', user.id),
('involved_user_ids', 'in', user.id),
'&',
('project_id', '=', False),
'|',
('message_partner_ids', 'in', [user.partner_id.id]),
('user_ids', 'in', user.id),
]
[
'|',
'&',
('project_id', '!=', False),
'|', '|',
('is_generic', '=', True),
('user_ids', 'in', user.id),
('involved_user_ids', 'in', user.id),
'&',
('project_id', '=', False),
'|',
('message_partner_ids', 'in', [user.partner_id.id]),
('user_ids', 'in', user.id),
]
[
'&', '&',
('user_id', '=', user.id),
('project_id', '!=', False),
'|', '|',
('project_id.privacy_visibility', '!=', 'followers'),
('message_partner_ids', 'in', [user.partner_id.id]),
'&',
('task_id', '!=', False),
'|',
('task_id.user_ids', 'in', user.id),
('task_id.involved_user_ids', 'in', user.id)
]
[
'&', '&',
('project_id', '!=', False),
('task_id', '!=', False),
'|',
'&',
('project_id.privacy_visibility', '=', 'followers'),
'|',
'|',
('project_id.project_lead', '=', user.id),
('project_id.user_id', '=', user.id),
'|',
'&',
('task_id.is_generic', '=', False),
'|',
('user_id', 'in', 'task_id.user_ids'),
('user_id', 'in', 'task_id.involved_user_ids'),
'&',
('task_id.is_generic', '=', True),
('user_id.partner_id', 'in', 'project_id.message_partner_ids'),
'&', '&',
('project_id.privacy_visibility', '!=', 'followers'),
('task_id.is_generic', '=', False),
'|',
('user_id', 'in', 'task_id.user_ids'),
('user_id', 'in', 'task_id.involved_user_ids')
]
Project/Task: involved assignees see involved tasks
[('involved_user_ids', 'in', user.id)]
Timesheets: involved assignees can manage own lines
[
'&', '&', '&',
('user_id', '=', user.id),
('project_id', '!=', False),
('task_id', '!=', False),
('task_id.involved_user_ids', 'in', user.id)
]
Task Availability: project lead: see all user tasks
[
'|', '|',
('project_id.project_lead', '=', user.id),
('user_id', '=', user.id),
('project_id.user_id', '=', user.id),
]