Implemented "join a user"
bzr revid: nicolas.vanhoren@openerp.com-20130204163720-xpob0dsdrx3idvki
This commit is contained in:
parent
d990223a83
commit
a0d4b3d099
|
@ -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 = {
|
||||
|
|
|
@ -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', '<>', 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"/>
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue