summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorfw-bot <otis@odoo.com>2020-09-28 10:39:06 +0000
committerjdoutreloux <jud@odoo.com>2020-09-29 08:34:43 +0000
commit13fc0ab18eb1e1d4ba47b7a1e66cd5079d692d8b (patch)
tree79343d66bdb9a1f22d5ca39919616534a3fe3dad /addons
parent8d26094b020db0245620e9898e02486acf3674bf (diff)
[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#58621 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/hr_expense/views/hr_expense_views.xml2
-rw-r--r--addons/hr_timesheet/models/hr_timesheet.py3
-rw-r--r--addons/sale_project/models/sale_order.py5
3 files changed, 8 insertions, 2 deletions
diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml
index dda76383896..4fb81ed5834 100644
--- a/addons/hr_expense/views/hr_expense_views.xml
+++ b/addons/hr_expense/views/hr_expense_views.xml
@@ -1055,6 +1055,7 @@ if records:
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="binding_model_id" ref="model_hr_expense_sheet"/>
<field name="binding_view_types">list</field>
+ <field name="groups_id" eval="[(4,ref('hr_expense.group_hr_expense_team_approver'))]"/>
<field name="state">code</field>
<field name="code">
if records:
@@ -1068,6 +1069,7 @@ if records:
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="binding_model_id" ref="model_hr_expense_sheet"/>
<field name="binding_view_types">list</field>
+ <field name="groups_id" eval="[(4,ref('hr_expense.group_hr_expense_team_approver'))]"/>
<field name="state">code</field>
<field name="code">
if records:
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)