summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDidier (did) <did@odoo.com>2020-09-04 10:09:46 +0000
committerAlexandre Kühn <aku@odoo.com>2020-09-04 17:03:09 +0000
commit8bc94d9b1ab1922d13ca90079e3ec4dca543c537 (patch)
tree5a50a09907f51c646d44d8bc3f711332f7947d01
parentf3f4a5db3a1f21f8234cccf47db9097ebf92c0aa (diff)
[FIX] website_livechat: missing decorator on message_post
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#57122 X-original-commit: 3939d3aa3b60e0f606a9f7defd695417f7b3f383 Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
-rw-r--r--addons/test_mail/tests/test_message_post.py11
-rw-r--r--addons/website_livechat/models/mail_channel.py3
2 files changed, 13 insertions, 1 deletions
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