[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
This commit is contained in:
@@ -29,12 +29,12 @@
|
||||
<field name="name">Task: Rating Request</field>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field name="subject">{{ object.project_id.company_id.name }}: Satisfaction Survey</field>
|
||||
<field name="email_from">{{ (object.rating_get_rated_partner_id().email_formatted if object.rating_get_rated_partner_id() else user.email_formatted) }}</field>
|
||||
<field name="partner_to" >{{ object.rating_get_partner_id().id }}</field>
|
||||
<field name="email_from">{{ (object._rating_get_operator().email_formatted if object._rating_get_operator() else user.email_formatted) }}</field>
|
||||
<field name="partner_to" >{{ object._rating_get_partner().id }}</field>
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
<t t-set="access_token" t-value="object.rating_get_access_token()"/>
|
||||
<t t-set="partner" t-value="object.rating_get_partner_id()"/>
|
||||
<t t-set="access_token" t-value="object._rating_get_access_token()"/>
|
||||
<t t-set="partner" t-value="object._rating_get_partner()"/>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="width:100%; margin:0px auto;">
|
||||
<tbody>
|
||||
<tr><td valign="top" style="font-size: 13px;">
|
||||
@@ -45,8 +45,8 @@
|
||||
Hello,<br/><br/>
|
||||
</t>
|
||||
Please take a moment to rate our services related to the task "<strong t-out="object.name or ''">Planning and budget</strong>"
|
||||
<t t-if="object.rating_get_rated_partner_id().name">
|
||||
assigned to <strong t-out="object.rating_get_rated_partner_id().name or ''">Mitchell Admin</strong>.<br/>
|
||||
<t t-if="object._rating_get_operator().name">
|
||||
assigned to <strong t-out="object._rating_get_operator().name or ''">Mitchell Admin</strong>.<br/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
.<br/>
|
||||
@@ -94,7 +94,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object.rating_get_partner_id().lang }}</field>
|
||||
<field name="lang">{{ object._rating_get_partner().lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user