diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 611265f20b4..e9f85e37ba6 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -67,9 +67,10 @@ class ProjectTaskType(models.Model): class Project(models.Model): _name = "project.project" _description = "Project" - _inherit = ['portal.mixin', 'mail.alias.mixin', 'mail.thread'] + _inherit = ['portal.mixin', 'mail.alias.mixin', 'mail.thread', 'rating.parent.mixin'] _order = "sequence, name, id" _period_number = 5 + _rating_satisfaction_days = False # takes all existing ratings def get_alias_model_name(self, vals): return vals.get('alias_model', 'project.task') @@ -221,8 +222,6 @@ class Project(models.Model): help="Project in which sub-tasks of the current project will be created. It can be the current project itself.") # rating fields - percentage_satisfaction_task = fields.Integer( - compute='_compute_percentage_satisfaction_task', string="Happy % on Task", help="Satisfaction rate on task.", store=True, default=-1) rating_request_deadline = fields.Datetime(compute='_compute_rating_request_deadline', store=True) rating_status = fields.Selection([('stage', 'Rating when changing stage'), ('periodic', 'Periodical Rating'), ('no','No rating')], 'Customer(s) Ratings', help="How to get customer feedback?\n" "- Rating when changing stage: an email will be sent when a task is pulled in another stage.\n" @@ -250,12 +249,6 @@ class Project(models.Model): project.access_warning = _( "The project cannot be shared with the recipient(s) because the privacy of the project is too restricted. Set the privacy to 'Visible by following customers' in order to make it accessible by the recipient(s).") - @api.depends('tasks.rating_ids.rating') - def _compute_percentage_satisfaction_task(self): - for project in self: - activity = project.tasks.rating_get_grades() - project.percentage_satisfaction_task = activity['great'] * 100 / sum(activity.values()) if sum(activity.values()) else -1 - @api.depends('rating_status', 'rating_status_period') def _compute_rating_request_deadline(self): periods = {'daily': 1, 'weekly': 7, 'bimonthly': 15, 'monthly': 30, 'quarterly': 90, 'yearly': 365} diff --git a/addons/project/tests/test_project_flow.py b/addons/project/tests/test_project_flow.py index 2735b07d1c2..32058a55f82 100644 --- a/addons/project/tests/test_project_flow.py +++ b/addons/project/tests/test_project_flow.py @@ -165,8 +165,8 @@ class TestProjectFlow(TestProjectBase): self.assertEqual(first_task.rating_count, 1, "Task should have only one rating associated, since one is not consumed") self.assertEqual(rating_good.parent_res_id, self.project_pigs.id) - self.assertEqual(self.project_goats.percentage_satisfaction_task, -1) - self.assertEqual(self.project_pigs.percentage_satisfaction_task, -1) + self.assertEqual(self.project_goats.rating_percentage_satisfaction, -1) + self.assertEqual(self.project_pigs.rating_percentage_satisfaction, 0) # There is a rating but not a "great" on, just an "okay". # Consuming rating_good first_task.rating_apply(10, rating_good.access_token) @@ -177,8 +177,8 @@ class TestProjectFlow(TestProjectBase): self.assertEqual(first_task.rating_count, 2, "Task should have two ratings associated with it") self.assertEqual(rating_good.parent_res_id, self.project_pigs.id) - self.assertEqual(self.project_goats.percentage_satisfaction_task, -1) - self.assertEqual(self.project_pigs.percentage_satisfaction_task, 50) + self.assertEqual(self.project_goats.rating_percentage_satisfaction, -1) + self.assertEqual(self.project_pigs.rating_percentage_satisfaction, 50) # We change the task from project_pigs to project_goats, ratings should be associated with the new project first_task.project_id = self.project_goats.id @@ -188,5 +188,5 @@ class TestProjectFlow(TestProjectBase): first_task.invalidate_cache() self.assertEqual(rating_good.parent_res_id, self.project_goats.id) - self.assertEqual(self.project_goats.percentage_satisfaction_task, 50) - self.assertEqual(self.project_pigs.percentage_satisfaction_task, -1) + self.assertEqual(self.project_goats.rating_percentage_satisfaction, 50) + self.assertEqual(self.project_pigs.rating_percentage_satisfaction, -1) diff --git a/addons/project/views/project_rating_templates.xml b/addons/project/views/project_rating_templates.xml index a1c0b9245e1..a016e3e77b2 100644 --- a/addons/project/views/project_rating_templates.xml +++ b/addons/project/views/project_rating_templates.xml @@ -18,7 +18,7 @@ -
+
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml index f9d598f1e95..d5f1d244968 100644 --- a/addons/project/views/project_views.xml +++ b/addons/project/views/project_views.xml @@ -101,10 +101,10 @@ name="%(act_project_project_2_project_task_all)d" icon="fa-tasks"> -