From 7b9fc0968f375e8d8068a2d7f0ffad9042bd3eea Mon Sep 17 00:00:00 2001 From: Micael Gomez Date: Fri, 6 Dec 2019 16:20:44 -0300 Subject: [PATCH] [FIX] Access rule now applies correctly to followers --- project_task_activity/__openerp__.py | 2 +- project_task_activity/project.py | 46 ++++++++++++++++++- .../security/project_security.xml | 4 +- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/project_task_activity/__openerp__.py b/project_task_activity/__openerp__.py index e3265739..f70bce03 100644 --- a/project_task_activity/__openerp__.py +++ b/project_task_activity/__openerp__.py @@ -20,7 +20,7 @@ ############################################################################## { "name": "Project Task Activity", - 'version': '9.0.1.0.0', + 'version': '9.0.1.0.1', 'category': 'Tools', 'sequence': 14, 'author': 'ADHOC SA', diff --git a/project_task_activity/project.py b/project_task_activity/project.py index f3f6b615..387c6834 100644 --- a/project_task_activity/project.py +++ b/project_task_activity/project.py @@ -3,7 +3,7 @@ # For copyright and license notices, see __openerp__.py file in module root # directory ############################################################################## -from openerp import models, api, fields, _ +from openerp import models, api, fields, _, SUPERUSER_ID from datetime import datetime # import json @@ -58,6 +58,28 @@ class ProjectTask(models.Model): activities_total = fields.Char( string="Activities Total", compute='_get_activities_total') + message_partner_ids = fields.Many2many( + 'res.partner', + 'task_msg_partner_rel', + 'msg_id', + 'partner_id', + compute='_compute_following_partners' + ) + + @api.multi + @api.depends('message_follower_ids') + def _compute_following_partners(self): + for task in self: + task.message_partner_ids = [ + (6, False, [ + x.id for x in task.message_follower_ids.mapped('partner_id') + ]) + ] + + def init(self, cr): + ids = self.search(cr, SUPERUSER_ID, []) + for task in self.browse(cr, SUPERUSER_ID, ids): + task._compute_following_partners() @api.one @api.depends('activity_ids.state') @@ -91,6 +113,28 @@ class ProjectProject(models.Model): progress_activities = fields.Float( string=_("Progress"), compute='_get_progress_activities') + message_partner_ids = fields.Many2many( + 'res.partner', + 'project_msg_partner_rel', + 'msg_id', + 'partner_id', + compute='_compute_following_partners' + ) + + @api.multi + @api.depends('message_follower_ids') + def _compute_following_partners(self): + for project in self: + project.message_partner_ids = [ + (6, False, [ + x.id for x in project.message_follower_ids.mapped('partner_id') + ]) + ] + + def init(self, cr): + ids = self.search(cr, SUPERUSER_ID, []) + for project in self.browse(cr, SUPERUSER_ID, ids): + project._compute_following_partners() @api.one def _get_task_activity(self): diff --git a/project_task_activity/security/project_security.xml b/project_task_activity/security/project_security.xml index abee5248..542bb191 100644 --- a/project_task_activity/security/project_security.xml +++ b/project_task_activity/security/project_security.xml @@ -11,9 +11,9 @@ '|', '&', ('project_id.privacy_visibility', '=', 'followers'), - ('project_id.message_follower_ids', 'in', [user.partner_id.id]), + ('project_id.message_partner_ids', 'in', [user.partner_id.id]), '|', - ('task_id.message_follower_ids', 'in', [user.partner_id.id]), + ('task_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) ]