diff options
| -rw-r--r-- | addons/website_livechat/models/website_visitor.py | 18 |
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 |
