From a05ae78abd815e4cdf81ffbebec87365ad0f92d3 Mon Sep 17 00:00:00 2001 From: Toufik Benjaa Date: Tue, 21 Aug 2018 11:51:06 +0200 Subject: [PATCH] [FIX] mail & project: Display access button on mail notifications This commit fixes two issues: - If a partner has multiple users and if any of these users is a share user, then the access button on mail notifications is not displayed. - If a project.task is either assigned or has its stage folded the access button may not be displayed for certain users. The users affected by this bug are the one who have their user's partner is linked to multiple users with at least one flagged as a share user. --- addons/mail/models/mail_thread.py | 2 +- addons/project/models/project.py | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index eecb71308c1..8a7a77c5614 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -689,7 +689,7 @@ class MailThread(models.AbstractModel): view_title = _('View') default_groups = [ - ('user', lambda partner: bool(partner.user_ids) and not any(user.share for user in partner.user_ids), {}), + ('user', lambda partner: bool(partner.user_ids) and any(not user.share for user in partner.user_ids), {}), ('portal', lambda partner: bool(partner.user_ids) and all(user.share for user in partner.user_ids), { 'has_button_access': False, }), diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 6be83391fd3..c4121bb8b58 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -858,14 +858,19 @@ class Task(models.Model): groups = super(Task, self)._notify_get_groups(message, groups) self.ensure_one() + + new_group = ( + 'group_project_user', + lambda partner: bool(partner.user_ids) and any(user.has_group('project.group_project_user') for user in partner.user_ids), + {}, + ) + if not self.user_id and not self.stage_id.fold: take_action = self._notify_get_action_link('assign') project_actions = [{'url': take_action, 'title': _('I take it')}] - new_group = ( - 'group_project_user', lambda partner: bool(partner.user_ids) and any(user.has_group('project.group_project_user') for user in partner.user_ids), { - 'actions': project_actions, - }) - groups = [new_group] + groups + new_group[2]['actions'] = project_actions + + groups = [new_group] + groups for group_name, group_method, group_data in groups: if group_name == 'customer':