Added history
bzr revid: nicolas.vanhoren@openerp.com-20130213110810-qy95202kyma76fbw
This commit is contained in:
parent
84c0f117c4
commit
719f67d2ca
|
@ -201,3 +201,50 @@ class im_user(osv.osv):
|
|||
_columns = {
|
||||
'support_channel_ids': fields.many2many('live_support.channel', 'live_support_channel_im_user', 'user_id', 'channel_id', string="Support Channels"),
|
||||
}
|
||||
|
||||
|
||||
class im_message(osv.osv):
|
||||
_inherit = 'im.message'
|
||||
|
||||
def _support_member(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
res[record.id] = False
|
||||
if record.to_id.user and record.from_id.user:
|
||||
continue
|
||||
elif record.to_id.user:
|
||||
res[record.id] = record.to_id.user.id
|
||||
elif record.from_id.user:
|
||||
res[record.id] = record.from_id.user.id
|
||||
return res
|
||||
|
||||
def _customer(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
res[record.id] = False
|
||||
if record.to_id.uuid and record.from_id.uuid:
|
||||
continue
|
||||
elif record.to_id.uuid:
|
||||
res[record.id] = record.to_id.id
|
||||
elif record.from_id.uuid:
|
||||
res[record.id] = record.from_id.id
|
||||
return res
|
||||
|
||||
def _direction(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
res[record.id] = False
|
||||
if not not record.to_id.user and not not record.from_id.user:
|
||||
continue
|
||||
elif not not record.to_id.user:
|
||||
res[record.id] = "c2s"
|
||||
elif not not record.from_id.user:
|
||||
res[record.id] = "s2c"
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'support_member_id': fields.function(_support_member, type='many2one', relation='res.users', string='Support Member', store=True, select=True),
|
||||
'customer_id': fields.function(_customer, type='many2one', relation='im.user', string='Customer', store=True, select=True),
|
||||
'direction': fields.function(_direction, type="selection", selection=[("s2c", "Support Member to Customer"), ("c2s", "Customer to Support Member")],
|
||||
string='Direction', store=False),
|
||||
}
|
||||
|
|
|
@ -119,6 +119,26 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_history">
|
||||
<field name="name">History</field>
|
||||
<field name="res_model">im.message</field>
|
||||
<field name="view_mode">list</field>
|
||||
</record>
|
||||
<menuitem name="History" parent="live_support" id="history" action="action_history" groups="group_live_support_manager"/>
|
||||
|
||||
<record id="im_message_form" model="ir.ui.view">
|
||||
<field name="name">im.message.tree</field>
|
||||
<field name="model">im.message</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="History">
|
||||
<field name="date"/>
|
||||
<field name="support_member_id"/>
|
||||
<field name="customer_id"/>
|
||||
<field name="direction"/>
|
||||
<field name="message"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -21,5 +21,16 @@
|
|||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="message_rule_1" model="ir.rule">
|
||||
<field name="name">Live Support Managers can read messages from live support</field>
|
||||
<field name="model_id" ref="web_im.model_im_message"/>
|
||||
<field name="groups" eval="[(6,0,[ref('live_support.group_live_support_manager')])]"/>
|
||||
<field name="domain_force">["|", ('to_id.user', '=', None), ('from_id.user', '=', None)]</field>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
<field name="perm_write" eval="0"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -249,10 +249,10 @@ define(["nova", "underscore", "oeclient", "require", "jquery",
|
|||
self.get_user(el.id).set(el);
|
||||
});
|
||||
self.last = result.last;
|
||||
var user_ids = _.pluck(_.pluck(result.res, "from"), 0);
|
||||
var user_ids = _.pluck(_.pluck(result.res, "from_id"), 0);
|
||||
self.ensure_users(user_ids).then(function() {
|
||||
_.each(result.res, function(mes) {
|
||||
var user = self.get_user(mes.from[0]);
|
||||
var user = self.get_user(mes.from_id[0]);
|
||||
self.received_message(mes, user);
|
||||
});
|
||||
self.poll();
|
||||
|
|
|
@ -202,11 +202,14 @@ def assert_uuid(uuid):
|
|||
|
||||
class im_message(osv.osv):
|
||||
_name = 'im.message'
|
||||
|
||||
_order = "date"
|
||||
|
||||
_columns = {
|
||||
'message': fields.char(string="Message", size=200, required=True),
|
||||
'from': fields.many2one("im.user", "From", required= True, ondelete='cascade'),
|
||||
'to': fields.many2one("im.user", "To", required=True, select=True, ondelete='cascade'),
|
||||
'date': fields.datetime("Date", required=True),
|
||||
'from_id': fields.many2one("im.user", "From", required= True, ondelete='cascade'),
|
||||
'to_id': fields.many2one("im.user", "To", required=True, select=True, ondelete='cascade'),
|
||||
'date': fields.datetime("Date", required=True, select=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
@ -228,8 +231,8 @@ class im_message(osv.osv):
|
|||
last = c_user.im_last_received or -1
|
||||
|
||||
# how fun it is to always need to reorder results from read
|
||||
mess_ids = self.search(cr, openerp.SUPERUSER_ID, [['id', '>', last], ['to', '=', my_id]], order="id", context=context)
|
||||
mess = self.read(cr, openerp.SUPERUSER_ID, mess_ids, ["id", "message", "from", "date"], context=context)
|
||||
mess_ids = self.search(cr, openerp.SUPERUSER_ID, [['id', '>', last], ['to_id', '=', my_id]], order="id", context=context)
|
||||
mess = self.read(cr, openerp.SUPERUSER_ID, mess_ids, ["id", "message", "from_id", "date"], context=context)
|
||||
index = {}
|
||||
for i in xrange(len(mess)):
|
||||
index[mess[i]["id"]] = mess[i]
|
||||
|
@ -245,7 +248,7 @@ class im_message(osv.osv):
|
|||
def post(self, cr, uid, message, to_user_id, uuid=None, context=None):
|
||||
assert_uuid(uuid)
|
||||
my_id = self.pool.get('im.user').get_by_user_id(cr, uid, uuid or uid)["id"]
|
||||
self.create(cr, openerp.SUPERUSER_ID, {"message": message, 'from': my_id, 'to': to_user_id}, context=context)
|
||||
self.create(cr, openerp.SUPERUSER_ID, {"message": message, 'from_id': my_id, 'to_id': to_user_id}, context=context)
|
||||
notify_channel(cr, "im_channel", {'type': 'message', 'receiver': to_user_id})
|
||||
return False
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<field name="name">Can only read messages that you sent or messages sent to you</field>
|
||||
<field name="model_id" ref="model_im_message"/>
|
||||
<field name="groups" eval="[(6,0,[ref('base.group_user')])]"/>
|
||||
<field name="domain_force">["|", ('to.user', '=', user.id), ('from.user', '=', user.id)]</field>
|
||||
<field name="domain_force">["|", ('to_id.user', '=', user.id), ('from_id.user', '=', user.id)]</field>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
<field name="perm_write" eval="0"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
|
|
|
@ -267,10 +267,10 @@ openerp.web_im = function(instance) {
|
|||
self.get_user(el.id).set(el);
|
||||
});
|
||||
self.last = result.last;
|
||||
var user_ids = _.pluck(_.pluck(result.res, "from"), 0);
|
||||
var user_ids = _.pluck(_.pluck(result.res, "from_id"), 0);
|
||||
self.ensure_users(user_ids).then(function() {
|
||||
_.each(result.res, function(mes) {
|
||||
var user = self.get_user(mes.from[0]);
|
||||
var user = self.get_user(mes.from_id[0]);
|
||||
self.received_message(mes, user);
|
||||
});
|
||||
self.poll();
|
||||
|
|
Loading…
Reference in New Issue