From 06dc4e20e32f991736b137baa0a7571c0d1cb790 Mon Sep 17 00:00:00 2001 From: fw-bot Date: Mon, 28 Sep 2020 10:39:06 +0000 Subject: [PATCH] [FIX] hr_timesheet : fix timesheet visibility on portal If a portal user was a customer but not a follower of a project he didn't have access to the timesheets linked to the project. Task-2299286 closes odoo/odoo#59252 X-original-commit: 13fc0ab18eb1e1d4ba47b7a1e66cd5079d692d8b Signed-off-by: Yannick Tivisse (yti) --- addons/hr_timesheet/models/hr_timesheet.py | 3 ++- addons/sale_project/models/sale_order.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/hr_timesheet/models/hr_timesheet.py b/addons/hr_timesheet/models/hr_timesheet.py index 060f08ceb47..bdb6a2fd2b5 100644 --- a/addons/hr_timesheet/models/hr_timesheet.py +++ b/addons/hr_timesheet/models/hr_timesheet.py @@ -125,10 +125,11 @@ class AccountAnalyticLine(models.Model): def _timesheet_get_portal_domain(self): return ['&', - '|', '|', + '|', '|', '|', ('task_id.project_id.message_partner_ids', 'child_of', [self.env.user.partner_id.commercial_partner_id.id]), ('task_id.message_partner_ids', 'child_of', [self.env.user.partner_id.commercial_partner_id.id]), ('task_id.project_id.allowed_portal_user_ids', 'child_of', [self.env.user.id]), + ('task_id.allowed_user_ids', 'in', [self.env.user.id]), ('task_id.project_id.privacy_visibility', '=', 'portal')] def _timesheet_preprocess(self, vals): diff --git a/addons/sale_project/models/sale_order.py b/addons/sale_project/models/sale_order.py index 857a8747348..e259c7d654b 100644 --- a/addons/sale_project/models/sale_order.py +++ b/addons/sale_project/models/sale_order.py @@ -75,7 +75,9 @@ class SaleOrder(models.Model): if action.get('context'): eval_context = self.env['ir.actions.actions']._get_eval_context() eval_context.update({'active_id': task_projects.id}) - action['context'] = safe_eval(action['context'], eval_context) + action_context = safe_eval(action['context'], eval_context) + action_context.update(eval_context) + action['context'] = action_context else: action = self.env["ir.actions.actions"]._for_xml_id("project.action_view_task") action['context'] = {} # erase default context to avoid default filter @@ -202,6 +204,7 @@ class SaleOrderLine(models.Model): # duplicating a project doesn't set the SO on sub-tasks project.tasks.filtered(lambda task: task.parent_id != False).write({ 'sale_line_id': self.id, + 'sale_order_id': self.order_id, }) else: project = self.env['project.project'].create(values)