diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/portal_rating/models | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/portal_rating/models')
| -rw-r--r-- | addons/portal_rating/models/__init__.py | 6 | ||||
| -rw-r--r-- | addons/portal_rating/models/ir_http.py | 13 | ||||
| -rw-r--r-- | addons/portal_rating/models/mail_message.py | 28 | ||||
| -rw-r--r-- | addons/portal_rating/models/rating.py | 23 |
4 files changed, 70 insertions, 0 deletions
diff --git a/addons/portal_rating/models/__init__.py b/addons/portal_rating/models/__init__.py new file mode 100644 index 00000000..dc338926 --- /dev/null +++ b/addons/portal_rating/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import ir_http +from . import mail_message +from . import rating diff --git a/addons/portal_rating/models/ir_http.py b/addons/portal_rating/models/ir_http.py new file mode 100644 index 00000000..04a6a05d --- /dev/null +++ b/addons/portal_rating/models/ir_http.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class IrHttp(models.AbstractModel): + _inherit = 'ir.http' + + @classmethod + def _get_translation_frontend_modules_name(cls): + mods = super(IrHttp, cls)._get_translation_frontend_modules_name() + return mods + ['portal_rating'] diff --git a/addons/portal_rating/models/mail_message.py b/addons/portal_rating/models/mail_message.py new file mode 100644 index 00000000..20716960 --- /dev/null +++ b/addons/portal_rating/models/mail_message.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class MailMessage(models.Model): + _inherit = 'mail.message' + + def _portal_message_format(self, field_list): + # inlude rating value in data if requested + if self._context.get('rating_include'): + field_list += ['rating_value'] + return super(MailMessage, self)._portal_message_format(field_list) + + def _message_format(self, fnames): + """ Override the method to add information about a publisher comment + on each rating messages if requested, and compute a plaintext value of it. + """ + vals_list = super(MailMessage, self)._message_format(fnames) + + if self._context.get('rating_include'): + infos = ["id", "publisher_comment", "publisher_id", "publisher_datetime", "message_id"] + related_rating = self.env['rating.rating'].sudo().search([('message_id', 'in', self.ids)]).read(infos) + mid_rating_tree = dict((rating['message_id'][0], rating) for rating in related_rating) + for vals in vals_list: + vals["rating"] = mid_rating_tree.get(vals['id'], {}) + return vals_list diff --git a/addons/portal_rating/models/rating.py b/addons/portal_rating/models/rating.py new file mode 100644 index 00000000..3b2d9574 --- /dev/null +++ b/addons/portal_rating/models/rating.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +from odoo import fields, models, exceptions, _ + + +class Rating(models.Model): + _inherit = 'rating.rating' + + # Adding information for comment a rating message + publisher_comment = fields.Text("Publisher comment") + publisher_id = fields.Many2one('res.partner', 'Commented by', + ondelete='set null', readonly=True) + publisher_datetime = fields.Datetime("Commented on", readonly=True) + + def write(self, values): + if values.get('publisher_comment'): + if not self.env.user.has_group("website.group_website_publisher"): + raise exceptions.AccessError(_("Only the publisher of the website can change the rating comment")) + if not values.get('publisher_datetime'): + values['publisher_datetime'] = fields.Datetime.now() + if not values.get('publisher_id'): + values['publisher_id'] = self.env.user.partner_id.id + return super(Rating, self).write(values) |
