Refactored livechat

bzr revid: nicolas.vanhoren@openerp.com-20130621133310-a68iiqy9wpu40iws
This commit is contained in:
niv-openerp 2013-06-21 15:33:10 +02:00
parent 8cc30e00e6
commit dcf20f9871
1 changed files with 18 additions and 26 deletions

View File

@ -26,6 +26,8 @@ import random
import jinja2 import jinja2
from openerp.osv import osv, fields from openerp.osv import osv, fields
from openerp import tools from openerp import tools
import openerp.addons.web.http as http
from openerp.addons.web.http import request
env = jinja2.Environment( env = jinja2.Environment(
loader=jinja2.PackageLoader('openerp.addons.im_livechat', "."), loader=jinja2.PackageLoader('openerp.addons.im_livechat', "."),
@ -33,48 +35,38 @@ env = jinja2.Environment(
) )
env.filters["json"] = json.dumps env.filters["json"] = json.dumps
class LiveChatController(openerp.addons.web.http.Controller): class LiveChatController(http.Controller):
_cp_path = '/im_livechat'
@openerp.addons.web.http.httprequest @http.route('/im_livechat/loader')
def loader(self, req, **kwargs): def loader(self, **kwargs):
p = json.loads(kwargs["p"]) p = json.loads(kwargs["p"])
db = p["db"] db = p["db"]
channel = p["channel"] channel = p["channel"]
user_name = p.get("user_name", None) user_name = p.get("user_name", None)
req.session._db = db request.session.authenticate(db=db, login="anonymous", password="anonymous")
req.session._uid = None info = request.session.model('im_livechat.channel').get_info_for_chat_src(channel)
req.session._login = "anonymous"
req.session._password = "anonymous"
info = req.session.model('im_livechat.channel').get_info_for_chat_src(channel)
info["db"] = db info["db"] = db
info["channel"] = channel info["channel"] = channel
info["userName"] = user_name info["userName"] = user_name
return req.make_response(env.get_template("loader.js").render(info), return request.make_response(env.get_template("loader.js").render(info),
headers=[('Content-Type', "text/javascript")]) headers=[('Content-Type', "text/javascript")])
@openerp.addons.web.http.httprequest @http.route('/im_livechat/web_page')
def web_page(self, req, **kwargs): def web_page(self, **kwargs):
p = json.loads(kwargs["p"]) p = json.loads(kwargs["p"])
db = p["db"] db = p["db"]
channel = p["channel"] channel = p["channel"]
req.session._db = db request.session.authenticate(db=db, login="anonymous", password="anonymous")
req.session._uid = None script = request.session.model('im_livechat.channel').read(channel, ["script"])["script"]
req.session._login = "anonymous" info = request.session.model('im_livechat.channel').get_info_for_chat_src(channel)
req.session._password = "anonymous"
script = req.session.model('im_livechat.channel').read(channel, ["script"])["script"]
info = req.session.model('im_livechat.channel').get_info_for_chat_src(channel)
info["script"] = script info["script"] = script
return req.make_response(env.get_template("web_page.html").render(info), return request.make_response(env.get_template("web_page.html").render(info),
headers=[('Content-Type', "text/html")]) headers=[('Content-Type', "text/html")])
@openerp.addons.web.http.jsonrequest @http.route('/im_livechat/available', type='json')
def available(self, req, db, channel): def available(self, db, channel):
req.session._db = db request.session.authenticate(db=db, login="anonymous", password="anonymous")
req.session._uid = None return request.session.model('im_livechat.channel').get_available_user(channel) > 0
req.session._login = "anonymous"
req.session._password = "anonymous"
return req.session.model('im_livechat.channel').get_available_user(channel) > 0
class im_livechat_channel(osv.osv): class im_livechat_channel(osv.osv):
_name = 'im_livechat.channel' _name = 'im_livechat.channel'