Implemented "join a user"

bzr revid: nicolas.vanhoren@openerp.com-20130204163720-xpob0dsdrx3idvki
This commit is contained in:
niv-openerp 2013-02-04 17:37:20 +01:00
parent d990223a83
commit a0d4b3d099
3 changed files with 18 additions and 3 deletions

View File

@ -21,6 +21,7 @@
import openerp.addons.web_im.im as im
import json
import random
from osv import osv, fields
class live_support_channel(osv.osv):
@ -30,6 +31,16 @@ class live_support_channel(osv.osv):
'user_ids': fields.many2many('im.user', 'live_support_channel_im_user', 'channel_id', 'user_id', string="Users"),
}
def get_available_user(self, cr, uid, channel_id, context=None):
channel = self.browse(cr, uid, channel_id, context=context)
users = []
for user in channel.user_ids:
if user.im_status:
users.append(user)
if len(users) == 0:
return False
return random.choice(users).id
class im_user(osv.osv):
_inherit = 'im.user'
_columns = {

View File

@ -17,7 +17,7 @@
<field name="name">Can only read support users</field>
<field name="model_id" ref="model_im_user"/>
<field name="groups" eval="[(6,0,[ref('portal.group_anonymous')])]"/>
<field name="domain_force">[('support_channel_ids', '&lt;&gt;', False)]</field>
<field name="domain_force">[('support_channel_ids', '!=', False)]</field>
<field name="perm_unlink" eval="0"/>
<field name="perm_write" eval="0"/>
<field name="perm_read" eval="1"/>

View File

@ -25,8 +25,12 @@ define(["nova", "jquery", "underscore", "oeclient", "require"], function(nova, $
$.when(templates_def, css_def).then(function() {
console.log("starting client");
connection = new oeclient.Connection(new oeclient.JsonpRPCConnector(server_url), db, login, password);
connection.getModel("im.user").search_read([["name", "=", ["Demo User"]]]).then(function(result) {
demo_id = result[0].id;
connection.getModel("live_support.channel").call("get_available_user", [1]).then(function(result) {
if (! result) {
console.log("no available user");
return;
}
demo_id = result;
var manager = new livesupport.ConversationManager(null);
manager.start_polling().then(function() {
manager.ensure_users([demo_id]).then(function() {