From 05c7e84239173bc55ef41f85ac125cb9e599f386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 29 Mar 2022 12:04:50 +0000 Subject: [PATCH] [IMP] rating: make methods private Purpose is to lessen access to internal methods and make them private. No need to expose internal computation. Task-2812665 (Rating: Cleanup rating flow code) Part-of: odoo/odoo#80707 --- addons/project/data/mail_template_data.xml | 14 +++++++------- addons/project/models/project.py | 6 +++--- addons/rating/models/rating_mixin.py | 18 +++++++++++++----- addons/sale_project/models/project.py | 6 ++---- .../models/test_mail_models_mail.py | 2 +- addons/test_mail_full/tests/test_rating.py | 4 ++-- 6 files changed, 28 insertions(+), 22 deletions(-) diff --git a/addons/project/data/mail_template_data.xml b/addons/project/data/mail_template_data.xml index d78d9724670..3fe984b5c8d 100644 --- a/addons/project/data/mail_template_data.xml +++ b/addons/project/data/mail_template_data.xml @@ -29,12 +29,12 @@ Task: Rating Request {{ object.project_id.company_id.name }}: Satisfaction Survey - {{ (object.rating_get_rated_partner_id().email_formatted if object.rating_get_rated_partner_id() else user.email_formatted) }} - {{ object.rating_get_partner_id().id }} + {{ (object._rating_get_operator().email_formatted if object._rating_get_operator() else user.email_formatted) }} + {{ object._rating_get_partner().id }}
- - + +
@@ -45,8 +45,8 @@ Hello,

Please take a moment to rate our services related to the task "Planning and budget" - - assigned to Mitchell Admin.
+ + assigned to Mitchell Admin.
.
@@ -94,7 +94,7 @@
- {{ object.rating_get_partner_id().lang }} + {{ object._rating_get_partner().lang }} diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 6d80e90a3f9..d8eea1adfa7 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -2273,8 +2273,8 @@ class Task(models.Model): if rating_template: task.rating_send_request(rating_template, lang=task.partner_id.lang, force_send=force_send) - def rating_get_partner_id(self): - res = super(Task, self).rating_get_partner_id() + def _rating_get_partner(self): + res = super(Task, self)._rating_get_partner() if not res and self.project_id.partner_id: return self.project_id.partner_id return res @@ -2292,7 +2292,7 @@ class Task(models.Model): def _rating_get_parent_field_name(self): return 'project_id' - def rating_get_rated_partner_id(self): + def _rating_get_operator(self): """ Overwrite since we have user_ids and not user_id """ tasks_with_one_user = self.filtered(lambda task: len(task.user_ids) == 1 and task.user_ids.partner_id) return tasks_with_one_user.user_ids.partner_id or self.env['res.partner'] diff --git a/addons/rating/models/rating_mixin.py b/addons/rating/models/rating_mixin.py index 7001a59592a..da89a483bbd 100644 --- a/addons/rating/models/rating_mixin.py +++ b/addons/rating/models/rating_mixin.py @@ -111,17 +111,25 @@ class RatingMixin(models.AbstractModel): """ return ['&', '&', ('res_model', '=', self._name), ('res_id', 'in', self.ids), ('consumed', '=', True)] - def rating_get_partner_id(self): + def _rating_get_partner(self): + """ Return the customer (partner) that performs the rating. + + :return record: res.partner singleton + """ if hasattr(self, 'partner_id') and self.partner_id: return self.partner_id return self.env['res.partner'] - def rating_get_rated_partner_id(self): + def _rating_get_operator(self): + """ Return the operator (partner) that is the person who is rated. + + :return record: res.partner singleton + """ if hasattr(self, 'user_id') and self.user_id.partner_id: return self.user_id.partner_id return self.env['res.partner'] - def rating_get_access_token(self, partner=None): + def _rating_get_access_token(self, partner=None): """ Return access token linked to existing ratings, or create a new rating that will create the asked token. An explicit call to access rights is performed as sudo is used afterwards as this method could be used from @@ -129,8 +137,8 @@ class RatingMixin(models.AbstractModel): self.check_access_rights('read') self.check_access_rule('read') if not partner: - partner = self.rating_get_partner_id() - rated_partner = self.rating_get_rated_partner_id() + partner = self._rating_get_partner() + rated_partner = self._rating_get_operator() ratings = self.rating_ids.sudo().filtered(lambda x: x.partner_id.id == partner.id and not x.consumed) if not ratings: rating = self.env['rating.rating'].sudo().create({ diff --git a/addons/sale_project/models/project.py b/addons/sale_project/models/project.py index 39ad9d2a7fd..d1a86881814 100644 --- a/addons/sale_project/models/project.py +++ b/addons/sale_project/models/project.py @@ -550,11 +550,9 @@ class ProjectTask(models.Model): } return self.action_view_so() - def rating_get_partner_id(self): + def _rating_get_partner(self): partner = self.partner_id or self.sale_line_id.order_id.partner_id - if partner: - return partner - return super().rating_get_partner_id() + return partner or super()._rating_get_partner() @api.depends('sale_order_id.invoice_status', 'sale_order_id.order_line') def _compute_task_to_invoice(self): diff --git a/addons/test_mail_full/models/test_mail_models_mail.py b/addons/test_mail_full/models/test_mail_models_mail.py index 3c254a0c25d..b6cdd20dd5d 100644 --- a/addons/test_mail_full/models/test_mail_models_mail.py +++ b/addons/test_mail_full/models/test_mail_models_mail.py @@ -54,5 +54,5 @@ class MailTestRating(models.Model): def _rating_apply_get_default_subtype_id(self): return self.env['ir.model.data']._xmlid_to_res_id("test_mail_full.mt_mail_test_rating_rating_done") - def rating_get_partner_id(self): + def _rating_get_partner(self): return self.customer_id diff --git a/addons/test_mail_full/tests/test_rating.py b/addons/test_mail_full/tests/test_rating.py index 097ac9ff9b3..05f552ea960 100644 --- a/addons/test_mail_full/tests/test_rating.py +++ b/addons/test_mail_full/tests/test_rating.py @@ -32,7 +32,7 @@ class TestRatingFlow(TestMailFullCommon, TestMailFullRecipients): record_rating = self.env['mail.test.rating'].browse(self.record_rating.ids) # prepare rating token - access_token = record_rating.rating_get_access_token() + access_token = record_rating._rating_get_access_token() record_rating.invalidate_cache(fnames=['rating_ids']) # check rating creation @@ -51,7 +51,7 @@ class TestRatingFlow(TestMailFullCommon, TestMailFullRecipients): record_messages = record_rating.message_ids # prepare rating token - access_token = record_rating.rating_get_access_token() + access_token = record_rating._rating_get_access_token() record_rating.invalidate_cache(fnames=['rating_ids']) # apply a rate as note (first click)