From 97a8ff9909530a73cc0a3f6d47eedc5762567e9c Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Thu, 23 Jun 2016 09:23:20 +0200 Subject: [PATCH] [IMP] im_livechat: unpin old sessions in the autovacuum cron --- addons/im_livechat/models/ir_autovacuum.py | 1 + addons/im_livechat/models/mail_channel.py | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/addons/im_livechat/models/ir_autovacuum.py b/addons/im_livechat/models/ir_autovacuum.py index 3fc648531d0..a9ac9609d68 100644 --- a/addons/im_livechat/models/ir_autovacuum.py +++ b/addons/im_livechat/models/ir_autovacuum.py @@ -10,4 +10,5 @@ class AutoVacuum(models.AbstractModel): @api.model def power_on(self, *args, **kwargs): self.pool['mail.channel'].remove_empty_livechat_sessions() + self.pool['mail.channel.partner'].unpin_old_livechat_sessions() return super(AutoVacuum, self).power_on(*args, **kwargs) diff --git a/addons/im_livechat/models/mail_channel.py b/addons/im_livechat/models/mail_channel.py index 2ef513acb09..01a19ac152b 100644 --- a/addons/im_livechat/models/mail_channel.py +++ b/addons/im_livechat/models/mail_channel.py @@ -1,6 +1,24 @@ # -*- coding: utf-8 -*- from openerp import api, fields, models -from openerp import SUPERUSER_ID + + +class ChannelPartner(models.Model): + _inherit = 'mail.channel.partner' + + @api.model + def unpin_old_livechat_sessions(self): + """ Unpin livechat sessions with no activity for at least one day to + clean the operator's interface """ + self.env.cr.execute(""" + UPDATE mail_channel_partner + SET is_pinned = false + WHERE id in ( + SELECT cp.id FROM mail_channel_partner cp + INNER JOIN mail_channel c on c.id = cp.channel_id + WHERE c.channel_type = 'livechat' AND cp.is_pinned is true AND + cp.write_date < current_timestamp - interval '1 day' + ) + """) class MailChannel(models.Model):