From 6e7d7f780df5cb920ebd2ba5b23eed44d4e8ae15 Mon Sep 17 00:00:00 2001 From: alt-odoo Date: Wed, 2 Feb 2022 08:45:37 +0000 Subject: [PATCH] [FIX] project: allow regular user to share project in edit mode If a user without Administration/Settings rights tries to share a project in edit mode with a collaborator, an access rights error is currently raised when creating the portal user. We should not create any user instead, as there is a signup link sent to the partner anyway. He can then set up his password without having to click on Reset password, which was not user-friendly anyway. closes odoo/odoo#84001 X-original-commit: 8de8c196a137f4ebbf67d7c7c83fee36f873f5c8 Signed-off-by: Laurent Stukkens (ltu) --- addons/project/models/project_collaborator.py | 2 -- addons/project/models/res_partner.py | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/project/models/project_collaborator.py b/addons/project/models/project_collaborator.py index 223d33155ac..640a71c0523 100644 --- a/addons/project/models/project_collaborator.py +++ b/addons/project/models/project_collaborator.py @@ -23,8 +23,6 @@ class ProjectCollaborator(models.Model): def create(self, vals_list): collaborator = self.env['project.collaborator'].search([], limit=1) project_collaborators = super().create(vals_list) - non_authenticated_collaborator = project_collaborators.partner_id.filtered(lambda partner: not partner.user_ids) - non_authenticated_collaborator._create_portal_users() if not collaborator: self._toggle_project_sharing_portal_rules(True) return project_collaborators diff --git a/addons/project/models/res_partner.py b/addons/project/models/res_partner.py index 290e92d8474..9e2be59d16b 100644 --- a/addons/project/models/res_partner.py +++ b/addons/project/models/res_partner.py @@ -30,13 +30,14 @@ class ResPartner(models.Model): partner.task_count += group['partner_id_count'] partner = partner.parent_id +# Deprecated: remove me in MASTER def _create_portal_users(self): partners_without_user = self.filtered(lambda partner: not partner.user_ids) if not partners_without_user: return self.env['res.users'] created_users = self.env['res.users'] for partner in partners_without_user: - created_users += self.env['res.users'].with_context(no_reset_password=True)._create_user_from_template({ + created_users += self.env['res.users'].with_context(no_reset_password=True).sudo()._create_user_from_template({ 'email': email_normalize(partner.email), 'login': email_normalize(partner.email), 'partner_id': partner.id,