[FIX] mail: prevent useless write

In database with frontend and live chat there are lot of bad query error.
bad query: UPDATE "mail_channel_partner" SET "write_uid"=5,"write_date"=(now() at time zone 'UTC') WHERE id IN (328111)

closes odoo/odoo#71207

Error: Could not serialize access due to concurrent update
X-original-commit: 36a9e761c8d6c1c6e9611cc410ecca82ff2b1659
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Florent de Labarre
2021-05-25 09:23:10 +00:00
parent a0529acd08
commit 72a929d30b
+1 -1
View File
@@ -983,7 +983,7 @@ class Channel(models.Model):
""" Hook for website_livechat channel unpin and cleaning """
self.ensure_one()
channel_partners = self.env['mail.channel.partner'].search(
[('partner_id', '=', self.env.user.partner_id.id), ('channel_id', '=', self.id)])
[('partner_id', '=', self.env.user.partner_id.id), ('channel_id', '=', self.id), ('is_pinned', '!=', pinned)])
self.env['bus.bus'].sendone((self._cr.dbname, 'res.partner', self.env.user.partner_id.id), self.channel_info('unsubscribe' if not pinned else False)[0])
if channel_partners:
channel_partners.write({'is_pinned': pinned})