From 467208f6e4d20997836e07a350e57b0a5ae482df Mon Sep 17 00:00:00 2001 From: "Didier (did)" Date: Fri, 4 Sep 2020 10:09:46 +0000 Subject: [PATCH] [FIX] website_livechat: missing decorator on message_post MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Incorrect override of message_post. Without this decorator, message_post returns a string `mail.message(ID,)` via RPC. Discuss needs the message ID to scroll chat window closes odoo/odoo#57123 X-original-commit: 3939d3aa3b60e0f606a9f7defd695417f7b3f383 Signed-off-by: Sébastien Theys (seb) --- addons/test_mail/tests/test_message_post.py | 11 +++++++++++ addons/website_livechat/models/mail_channel.py | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/addons/test_mail/tests/test_message_post.py b/addons/test_mail/tests/test_message_post.py index 8e0a06320fb..cf03386a0e0 100644 --- a/addons/test_mail/tests/test_message_post.py +++ b/addons/test_mail/tests/test_message_post.py @@ -10,6 +10,7 @@ from odoo.addons.test_mail.models.test_mail_models import MailTestSimple from odoo.addons.test_mail.tests.common import TestMailCommon, TestRecipients from odoo.exceptions import AccessError from odoo.tools import mute_logger, formataddr +from odoo.api import call_kw class TestMessagePost(TestMailCommon, TestRecipients): @@ -294,3 +295,13 @@ class TestMessagePost(TestMailCommon, TestRecipients): subject='About %s' % test_record.name, body_content=test_record.name, attachments=[('first.txt', b'My first attachment', 'text/plain'), ('second.txt', b'My second attachment', 'text/plain')]) + + # This method should be run inside a post_install class to ensure that all + # message_post overrides are tested. + def test_message_post_return(self): + test_channel = self.env['mail.channel'].create({ + 'name': 'Test', + }) + # Use call_kw as shortcut to simulate a RPC call. + messageId = call_kw(self.env['mail.channel'], 'message_post', [test_channel.id], {'body': 'test'}) + self.assertTrue(isinstance(messageId, int)) diff --git a/addons/website_livechat/models/mail_channel.py b/addons/website_livechat/models/mail_channel.py index 86ab7aeb2c3..fd3189b8400 100644 --- a/addons/website_livechat/models/mail_channel.py +++ b/addons/website_livechat/models/mail_channel.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models, _ +from odoo import api, fields, models, _ class MailChannel(models.Model): @@ -62,6 +62,7 @@ class MailChannel(models.Model): return message + @api.returns('mail.message', lambda value: value.id) def message_post(self, **kwargs): """Override to mark the visitor as still connected. If the message sent is not from the operator (so if it's the visitor or