From abcb165d97dc90cbb878dd0f6ad3e35937816c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Maes?= Date: Thu, 8 Jan 2015 11:34:38 +0100 Subject: [PATCH] [IMP] website_livechat : make it depend on rating_livechat. It now propose to display livechat channel on website pages, with its ratings and description. --- addons/website_livechat/__init__.py | 3 +- addons/website_livechat/__openerp__.py | 5 +- .../website_livechat/controllers/__init__.py | 1 + addons/website_livechat/controllers/main.py | 42 +++++ addons/website_livechat/models/__init__.py | 3 +- addons/website_livechat/models/im_livechat.py | 10 ++ addons/website_livechat/models/website.py | 20 +-- .../security/ir.model.access.csv | 2 + .../security/website_livechat.xml | 0 .../views/website_livechat.xml | 152 +++++++++++++++++- .../views/website_livechat_view.xml | 17 ++ 11 files changed, 236 insertions(+), 19 deletions(-) create mode 100644 addons/website_livechat/controllers/__init__.py create mode 100644 addons/website_livechat/controllers/main.py create mode 100644 addons/website_livechat/models/im_livechat.py create mode 100644 addons/website_livechat/security/ir.model.access.csv create mode 100644 addons/website_livechat/security/website_livechat.xml create mode 100644 addons/website_livechat/views/website_livechat_view.xml diff --git a/addons/website_livechat/__init__.py b/addons/website_livechat/__init__.py index 2c4eac3f855..9f86759e32b 100644 --- a/addons/website_livechat/__init__.py +++ b/addons/website_livechat/__init__.py @@ -1 +1,2 @@ -import models \ No newline at end of file +import controllers +import models diff --git a/addons/website_livechat/__openerp__.py b/addons/website_livechat/__openerp__.py index 1e87f362778..91f182480f8 100644 --- a/addons/website_livechat/__openerp__.py +++ b/addons/website_livechat/__openerp__.py @@ -7,6 +7,7 @@ Odoo Website LiveChat ======================== For website built with Odoo CMS, this module include a chat button on your Website, and allow your visitors to chat with your collabarators. +It also will include the feedback tool for the livechat, and web pages to display your channel and its ratings on the website. """, 'author': 'OpenERP SA', 'depends': ['website', 'im_livechat'], @@ -14,6 +15,8 @@ For website built with Odoo CMS, this module include a chat button on your Websi 'data': [ 'views/website_livechat.xml', 'views/res_config.xml', - 'website_livechat_data.xml' + 'views/website_livechat_view.xml', + 'security/ir.model.access.csv', + 'website_livechat_data.xml', ], } diff --git a/addons/website_livechat/controllers/__init__.py b/addons/website_livechat/controllers/__init__.py new file mode 100644 index 00000000000..8ee9bae18d9 --- /dev/null +++ b/addons/website_livechat/controllers/__init__.py @@ -0,0 +1 @@ +import main diff --git a/addons/website_livechat/controllers/main.py b/addons/website_livechat/controllers/main.py new file mode 100644 index 00000000000..83ad0fced2f --- /dev/null +++ b/addons/website_livechat/controllers/main.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +from openerp import http +from openerp.http import request + + +class website_rating_livechat(http.Controller): + + @http.route('/livechat/', type='http', auth="public", website=True) + def channel_list(self, **kw): + # display the list of the channel + channels = request.env['im_livechat.channel'].sudo().search([('website_published','=', True)]) + values = { + 'channels' : channels + } + return request.website.render('website_livechat.channel_list_page', values) + + + @http.route('/livechat/channel/', type='http', auth='public', website=True) + def channel_rating(self, channel, **kw): + # expose the ratings of the channel + if channel.website_published: + + # get the last 100 ratings and the repartition per grade + ratings = request.env['rating.rating'].search([('res_model','=','im_chat.session'), ('res_id', 'in', channel.sudo().session_ids.ids)], order='create_date desc', limit=100) + repartition = channel.sudo().session_ids.rating_get_grades() + + # compute percentage + percentage = dict.fromkeys(['great', 'okay', 'bad'], 0) + for grade in repartition: + percentage[grade] = repartition[grade] * 100 / sum(repartition.values()) if sum(repartition.values()) else 0 + + # the value dict to render the template + values = { + 'channel' : channel, + 'ratings' : ratings, + 'team' : channel.sudo().user_ids, + 'percentage' : percentage + } + return request.website.render("website_livechat.channel_page", values) + else: + return request.website.render('website.403') diff --git a/addons/website_livechat/models/__init__.py b/addons/website_livechat/models/__init__.py index b8b239729b6..2f372141da0 100644 --- a/addons/website_livechat/models/__init__.py +++ b/addons/website_livechat/models/__init__.py @@ -1 +1,2 @@ -import website \ No newline at end of file +import website +import im_livechat diff --git a/addons/website_livechat/models/im_livechat.py b/addons/website_livechat/models/im_livechat.py new file mode 100644 index 00000000000..805858eddf3 --- /dev/null +++ b/addons/website_livechat/models/im_livechat.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields + + +class im_livechat_channel(models.Model): + + _inherit = 'im_livechat.channel' + + website_published = fields.Boolean("Website published", default=False, help="If checked, the channel and its ratings will be display on your website") + website_description = fields.Html("Website description", default=False, help="Description of the channel displayed on the website page") diff --git a/addons/website_livechat/models/website.py b/addons/website_livechat/models/website.py index 3e3df1c5bdc..22a2636f7b2 100644 --- a/addons/website_livechat/models/website.py +++ b/addons/website_livechat/models/website.py @@ -1,15 +1,17 @@ -from openerp.osv import osv, fields -class website(osv.osv): +from openerp import fields, models + +class website(models.Model): + _inherit = "website" - _columns = { - 'channel_id': fields.many2one('im_livechat.channel', string="Channel"), - } + channel_id = fields.Many2one('im_livechat.channel', string='Live Chat Channel') + + +class website_config_settings(models.TransientModel): -class website_config_settings(osv.osv_memory): _inherit = 'website.config.settings' - _columns = { - 'channel_id': fields.related('website_id', 'channel_id', type='many2one', relation='im_livechat.channel', string='Live Chat Channel'), - } + channel_id = fields.Many2one('im_livechat.channel', string='Live Chat Channel', related='website_id.channel_id') + + diff --git a/addons/website_livechat/security/ir.model.access.csv b/addons/website_livechat/security/ir.model.access.csv new file mode 100644 index 00000000000..56fe27b6c49 --- /dev/null +++ b/addons/website_livechat/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_im_livechat_channel_public,im_livechat.channel.public,im_livechat.model_im_livechat_channel,base.group_public,1,0,0,0 \ No newline at end of file diff --git a/addons/website_livechat/security/website_livechat.xml b/addons/website_livechat/security/website_livechat.xml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/addons/website_livechat/views/website_livechat.xml b/addons/website_livechat/views/website_livechat.xml index 63f0d334327..dab68cbd414 100644 --- a/addons/website_livechat/views/website_livechat.xml +++ b/addons/website_livechat/views/website_livechat.xml @@ -2,13 +2,151 @@ - + + + + + + + + + + diff --git a/addons/website_livechat/views/website_livechat_view.xml b/addons/website_livechat/views/website_livechat_view.xml new file mode 100644 index 00000000000..013ffa49cf2 --- /dev/null +++ b/addons/website_livechat/views/website_livechat_view.xml @@ -0,0 +1,17 @@ + + + + + + im_livechat.channel.form.with.website_published + im_livechat.channel + + + + + + + + + +