diff --git a/addons/project/data/project_demo.xml b/addons/project/data/project_demo.xml index c8b388a39b7..f8b0a6ddb0a 100644 --- a/addons/project/data/project_demo.xml +++ b/addons/project/data/project_demo.xml @@ -11,6 +11,10 @@ + + + + diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 82c5ec9b59b..1410b39ae0a 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -45,6 +45,9 @@ PROJECT_TASK_READABLE_FIELDS = { 'legend_done', 'user_ids', 'display_parent_task_button', + 'allow_milestones', + 'milestone_id', + 'has_late_and_unreached_milestone', } PROJECT_TASK_WRITABLE_FIELDS = { @@ -1138,7 +1141,6 @@ class Task(models.Model): has_late_and_unreached_milestone = fields.Boolean( compute='_compute_has_late_and_unreached_milestone', search='_search_has_late_and_unreached_milestone', - groups='project.group_project_milestone', ) # Task Dependencies fields @@ -2024,7 +2026,7 @@ class Task(models.Model): if all(not task.allow_milestones for task in self): self.has_late_and_unreached_milestone = False return - late_milestones = self.env['project.milestone']._search([ + late_milestones = self.env['project.milestone'].sudo()._search([ # sudo is needed for the portal user in Project Sharing. ('id', 'in', self.milestone_id.ids), ('is_reached', '=', False), ('deadline', '<', fields.Date.today()), diff --git a/addons/project/models/res_config_settings.py b/addons/project/models/res_config_settings.py index 0dd42cc8a62..93ebc05699a 100644 --- a/addons/project/models/res_config_settings.py +++ b/addons/project/models/res_config_settings.py @@ -14,7 +14,7 @@ class ResConfigSettings(models.TransientModel): group_project_stages = fields.Boolean("Project Stages", implied_group="project.group_project_stages") group_project_recurring_tasks = fields.Boolean("Recurring Tasks", implied_group="project.group_project_recurring_tasks") group_project_task_dependencies = fields.Boolean("Task Dependencies", implied_group="project.group_project_task_dependencies") - group_project_milestone = fields.Boolean('Milestones', implied_group='project.group_project_milestone') + group_project_milestone = fields.Boolean('Milestones', implied_group='project.group_project_milestone', group='base.group_portal,base.group_user') rating_status = fields.Selection( [('stage', 'Rating when changing stage'), ('periodic', 'Periodic rating') diff --git a/addons/project/views/project_sharing_views.xml b/addons/project/views/project_sharing_views.xml index a148174051b..f5d06ca7d48 100644 --- a/addons/project/views/project_sharing_views.xml +++ b/addons/project/views/project_sharing_views.xml @@ -44,6 +44,8 @@ + + @@ -56,6 +58,10 @@
+ +
+ +

@@ -119,10 +125,12 @@ + + @@ -179,6 +187,13 @@ + + + + @@ -240,6 +261,7 @@ + @@ -253,6 +275,7 @@ domain="[('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/> +