diff options
| author | Jérome Maes <jem@openerp.com> | 2015-01-08 11:34:16 +0100 |
|---|---|---|
| committer | Jérome Maes <jem@openerp.com> | 2015-01-08 12:28:22 +0100 |
| commit | ade60d54bbbc5c9315346a8ede7f79dc6d4eb80a (patch) | |
| tree | 3509ed8f7a500248171a70bdb957e604128628e2 /addons/im_livechat/controllers/livechat.py | |
| parent | c8581af5921c0b5deb780658926d0953023b2a0d (diff) | |
[IMP] im_livechat : make the feedback for livechat a standart feature using the rating mixin. Create a dependancy to rating.
Diffstat (limited to 'addons/im_livechat/controllers/livechat.py')
| -rw-r--r-- | addons/im_livechat/controllers/livechat.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/addons/im_livechat/controllers/livechat.py b/addons/im_livechat/controllers/livechat.py new file mode 100644 index 00000000000..c3015d33f87 --- /dev/null +++ b/addons/im_livechat/controllers/livechat.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +import json +import openerp +import openerp.addons.im_chat.im_chat + +from openerp import http +from openerp.http import request + + +class LivechatController(http.Controller): + + @http.route('/im_livechat/support/<string:dbname>/<int:channel_id>', type='http', auth='none') + def support_page(self, dbname, channel_id, **kwargs): + registry, cr, uid, context = openerp.modules.registry.RegistryManager.get(dbname), request.cr, openerp.SUPERUSER_ID, request.context + info = registry.get('im_livechat.channel').get_info_for_chat_src(cr, uid, channel_id) + info["dbname"] = dbname + info["channel"] = channel_id + info["channel_name"] = registry.get('im_livechat.channel').read(cr, uid, channel_id, ['name'], context=context)["name"] + return request.render('im_livechat.support_page', info) + + @http.route('/im_livechat/loader/<string:dbname>/<int:channel_id>', type='http', auth='none') + def loader(self, dbname, channel_id, **kwargs): + registry, cr, uid, context = openerp.modules.registry.RegistryManager.get(dbname), request.cr, openerp.SUPERUSER_ID, request.context + info = registry.get('im_livechat.channel').get_info_for_chat_src(cr, uid, channel_id) + info["dbname"] = dbname + info["channel"] = channel_id + info["username"] = kwargs.get("username", "Visitor") + # find the country from the request + country_id = False + country_code = request.session.geoip and request.session.geoip.get('country_name') or False + if country_code: + country_ids = registry.get('res.country').search(cr, uid, [('code', '=', country_code)], context=context) + if country_ids: + country_id = country_ids[0] + # extract url + url = request.httprequest.headers.get('Referer') or request.httprequest.base_url + # find the match rule for the given country and url + rule = registry.get('im_livechat.channel.rule').match_rule(cr, uid, channel_id, url, country_id, context=context) + if rule: + if rule.action == 'hide_button': + # don't return the initialization script, since its blocked (in the country) + return + rule_data = { + 'action' : rule.action, + 'auto_popup_timer' : rule.auto_popup_timer, + 'regex_url' : rule.regex_url, + } + info['rule'] = json.dumps(rule and rule_data or False) + return request.render('im_livechat.loader', info) + + @http.route('/im_livechat/get_session', type="json", auth="none") + def get_session(self, channel_id, anonymous_name, **kwargs): + cr, uid, context, db = request.cr, request.uid or openerp.SUPERUSER_ID, request.context, request.db + reg = openerp.modules.registry.RegistryManager.get(db) + # if geoip, add the country name to the anonymous name + if request.session.geoip: + anonymous_name = anonymous_name + " ("+request.session.geoip.get('country_name', "")+")" + return reg.get("im_livechat.channel").get_channel_session(cr, uid, channel_id, anonymous_name, context=context) + + @http.route('/im_livechat/available', type='json', auth="none") + def available(self, db, channel): + cr, uid, context, db = request.cr, request.uid or openerp.SUPERUSER_ID, request.context, request.db + reg = openerp.modules.registry.RegistryManager.get(db) + with reg.cursor() as cr: + return len(reg.get('im_livechat.channel').get_available_users(cr, uid, channel)) > 0 + |
