From 2f1bd1327425b0d54fe9422b4004b147eaec5f08 Mon Sep 17 00:00:00 2001 From: Ivan Yelizariev Date: Mon, 21 Mar 2022 11:20:45 +0000 Subject: [PATCH] [FIX] project: make custom fields copiable again Since #73341 copy_data is filtered to avoid leaking information to portal user. Partically, it makes custom field not copiable. Fix it by disabling the filter for internal users. This may lead to a problem with hacky field `personal_stage_type_ids`. To avoid extra complexity in the code, just mark it as `copy=False`. The latter change is kind of an improvement from functional point of view, since using default personal stage seems to be a better idea rather than copying the stage. --- opw-2746922 closes odoo/odoo#87064 X-original-commit: 9947e82c5c25cde030aca43f7eb6fe1293300329 Signed-off-by: Laurent Stukkens (ltu) --- addons/project/models/project.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 9366a023711..ee4de860498 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -975,7 +975,7 @@ class Task(models.Model): # Second Many2many containing the actual personal stage for the current user # See project_task_stage_personal.py for the model defininition personal_stage_type_ids = fields.Many2many('project.task.type', 'project_task_user_rel', column1='task_id', column2='stage_id', - ondelete='restrict', group_expand='_read_group_personal_stage_type_ids', + ondelete='restrict', group_expand='_read_group_personal_stage_type_ids', copy=False, domain="[('user_id', '=', user.id)]", depends=['user_ids'], string='Personal Stage') # Personal Stage computed from the user personal_stage_id = fields.Many2one('project.task.stage.personal', string='Personal Stage State', compute_sudo=False, @@ -1655,6 +1655,8 @@ class Task(models.Model): def copy_data(self, default=None): defaults = super().copy_data(default=default) + if self.env.user.has_group('project.group_project_user'): + return defaults return [{k: v for k, v in default.items() if k in self.SELF_READABLE_FIELDS} for default in defaults] @api.model