summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/website_livechat/models/website_visitor.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/addons/website_livechat/models/website_visitor.py b/addons/website_livechat/models/website_visitor.py
index 8a0017a7fed..46731aea585 100644
--- a/addons/website_livechat/models/website_visitor.py
+++ b/addons/website_livechat/models/website_visitor.py
@@ -6,6 +6,7 @@ import json
from odoo import models, api, fields, _
from odoo.exceptions import UserError
+from odoo.http import request
class WebsiteVisitor(models.Model):
@@ -92,6 +93,12 @@ class WebsiteVisitor(models.Model):
notifications.append([(self._cr.dbname, 'res.partner', operator.partner_id.id), mail_channel_info])
self.env['bus.bus'].sendmany(notifications)
+ def _link_to_visitor(self, target, keep_unique=True):
+ """ Copy sessions of the secondary visitors to the main partner visitor. """
+ if target.partner_id:
+ target.mail_channel_ids |= self.mail_channel_ids
+ super(WebsiteVisitor, self)._link_to_visitor(target, keep_unique=keep_unique)
+
def _link_to_partner(self, partner, update_values=None):
""" Adapt partner in members of related livechats """
if partner:
@@ -100,3 +107,14 @@ class WebsiteVisitor(models.Model):
(4, partner.id),
]
super(WebsiteVisitor, self)._link_to_partner(partner, update_values=update_values)
+
+ def _create_visitor(self):
+ visitor = super(WebsiteVisitor, self)._create_visitor()
+ mail_channel_uuid = json.loads(request.httprequest.cookies.get('im_livechat_session', '{}')).get('uuid')
+ if mail_channel_uuid:
+ mail_channel = request.env["mail.channel"].sudo().search([("uuid", "=", mail_channel_uuid)])
+ mail_channel.write({
+ 'livechat_visitor_id': visitor.id,
+ 'anonymous_name': visitor.display_name
+ })
+ return visitor