summaryrefslogtreecommitdiff
path: root/addons/portal_rating/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'addons/portal_rating/controllers')
-rw-r--r--addons/portal_rating/controllers/__init__.py5
-rw-r--r--addons/portal_rating/controllers/portal_chatter.py40
-rw-r--r--addons/portal_rating/controllers/portal_rating.py17
3 files changed, 62 insertions, 0 deletions
diff --git a/addons/portal_rating/controllers/__init__.py b/addons/portal_rating/controllers/__init__.py
new file mode 100644
index 00000000..514e3fde
--- /dev/null
+++ b/addons/portal_rating/controllers/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import portal_chatter
+from . import portal_rating
diff --git a/addons/portal_rating/controllers/portal_chatter.py b/addons/portal_rating/controllers/portal_chatter.py
new file mode 100644
index 00000000..fb3116bc
--- /dev/null
+++ b/addons/portal_rating/controllers/portal_chatter.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import http
+from odoo.http import request
+
+from odoo.addons.portal.controllers.mail import PortalChatter
+
+
+class PortalChatter(PortalChatter):
+
+ def _portal_post_filter_params(self):
+ fields = super(PortalChatter, self)._portal_post_filter_params()
+ fields += ['rating_value', 'rating_feedback']
+ return fields
+
+ @http.route()
+ def portal_chatter_post(self, res_model, res_id, message, redirect=None, attachment_ids='', attachment_tokens='', **kwargs):
+ if kwargs.get('rating_value'):
+ kwargs['rating_feedback'] = kwargs.pop('rating_feedback', message)
+ return super(PortalChatter, self).portal_chatter_post(res_model, res_id, message, redirect=redirect, attachment_ids=attachment_ids, attachment_tokens=attachment_tokens, **kwargs)
+
+ @http.route()
+ def portal_chatter_init(self, res_model, res_id, domain=False, limit=False, **kwargs):
+ result = super(PortalChatter, self).portal_chatter_init(res_model, res_id, domain=domain, limit=limit, **kwargs)
+ # get the rating statistics about the record
+ if kwargs.get('rating_include'):
+ record = request.env[res_model].browse(res_id)
+ if hasattr(record, 'rating_get_stats'):
+ result['rating_stats'] = record.sudo().rating_get_stats()
+ return result
+
+ @http.route()
+ def portal_message_fetch(self, res_model, res_id, domain=False, limit=False, offset=False, **kw):
+ # add 'rating_include' in context, to fetch them in portal_message_format
+ if kw.get('rating_include'):
+ context = dict(request.context)
+ context['rating_include'] = True
+ request.context = context
+ return super(PortalChatter, self).portal_message_fetch(res_model, res_id, domain=domain, limit=limit, offset=offset, **kw)
diff --git a/addons/portal_rating/controllers/portal_rating.py b/addons/portal_rating/controllers/portal_rating.py
new file mode 100644
index 00000000..2e8e4884
--- /dev/null
+++ b/addons/portal_rating/controllers/portal_rating.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import http, _
+from odoo.http import request
+
+
+class PortalRating(http.Controller):
+
+ @http.route(['/website/rating/comment'], type='json', auth="user", methods=['POST'], website=True)
+ def publish_rating_comment(self, rating_id, publisher_comment):
+ rating = request.env['rating.rating'].search([('id', '=', int(rating_id))])
+ if not rating:
+ return {'error': _('Invalid rating')}
+ rating.write({'publisher_comment': publisher_comment})
+ # return to the front-end the created/updated publisher comment
+ return rating.read(['publisher_comment', 'publisher_id', 'publisher_datetime'])[0]