2021-01-05 10:18:36 +01:00
|
|
|
# Copyright 2020 Tecnativa - João Marques
|
2022-10-19 12:45:37 +02:00
|
|
|
# Copyright 2022 Tecnativa - Víctor Martínez
|
2021-01-05 10:18:36 +01:00
|
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
2021-02-15 14:28:18 +01:00
|
|
|
# pylint: disable=C8107
|
2021-01-05 10:18:36 +01:00
|
|
|
from odoo.tests import common
|
2021-08-12 12:58:35 +02:00
|
|
|
from odoo.tools import mute_logger
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
|
2022-10-19 12:45:37 +02:00
|
|
|
class TestMailNotificationCustomSubject(common.TransactionCase):
|
2021-08-12 12:58:35 +02:00
|
|
|
@classmethod
|
|
|
|
def setUpClass(cls):
|
|
|
|
super().setUpClass()
|
|
|
|
cls.partner_1, cls.partner_2 = (
|
|
|
|
cls.env["res.partner"]
|
|
|
|
.with_context(tracking_disable=True)
|
|
|
|
.create(
|
|
|
|
[
|
|
|
|
{"name": "Test partner 1", "email": "partner1@example.com"},
|
|
|
|
{"name": "Test partner 2", "email": "partner2@example.com"},
|
|
|
|
]
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
2022-12-02 09:57:08 +01:00
|
|
|
cls.admin = common.new_test_user(cls.env, "boss", "base.group_system")
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super().setUp()
|
|
|
|
self.uid = common.new_test_user(self.env, "worker")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
def test_email_subject_template_overrides(self):
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 1",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{object.name or 'n/a'}} and something more",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_1.subject, "Test partner 1 and something more")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
# Send message in partner 2
|
|
|
|
mail_message_2 = self.partner_2.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_2.subject, "Test partner 2 and something more")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
# Explicit subject should also be overwritten
|
|
|
|
mail_message_3 = self.partner_2.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment", subject="Test"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_3.subject, "Test partner 2 and something more")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
def test_email_subject_template_normal(self):
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 1",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{object.name or 'n/a'}} and something more",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send note in partner
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_note", subject="Test"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject. Subject Template should not apply
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_1.subject, "Test")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
def test_email_subject_template_multi(self):
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 1",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{object.name or 'n/a'}} and something more",
|
|
|
|
}
|
|
|
|
)
|
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 2",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{object.name or 'n/a'}} and something different",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(
|
2021-01-05 10:18:36 +01:00
|
|
|
mail_message_1.subject, "Test partner 1 and something different"
|
|
|
|
)
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 3",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{' and yet something else'}}",
|
|
|
|
"position": "append_after",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
|
|
|
mail_message_2 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(
|
2021-01-05 10:18:36 +01:00
|
|
|
mail_message_2.subject,
|
|
|
|
"Test partner 1 and something different and yet something else",
|
|
|
|
)
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 4",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{'Re: '}}",
|
|
|
|
"position": "append_before",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
|
|
|
mail_message_3 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(
|
2021-01-05 10:18:36 +01:00
|
|
|
mail_message_3.subject,
|
|
|
|
"Re: Test partner 1 and something different and yet something else",
|
|
|
|
)
|
|
|
|
|
|
|
|
def test_email_subject_template_w_original(self):
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test template 1",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{' and something more'}}",
|
|
|
|
"position": "append_after",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
2021-08-12 11:57:11 +02:00
|
|
|
body="Test",
|
2021-08-12 12:58:35 +02:00
|
|
|
subtype_xmlid="mail.mt_comment",
|
2021-08-12 11:57:11 +02:00
|
|
|
subject="Test",
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_1.subject, "Test and something more")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
def test_bad_template_does_not_break(self):
|
2021-04-19 14:26:38 +02:00
|
|
|
"""Create template with error (obaject) to test error."""
|
2022-12-02 09:57:08 +01:00
|
|
|
with self.with_user("boss"):
|
|
|
|
self.env["mail.message.custom.subject"].create(
|
|
|
|
{
|
|
|
|
"name": "Test bad template 1",
|
|
|
|
"model_id": self.env.ref("base.model_res_partner").id,
|
|
|
|
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
|
|
|
|
"subject_template": "{{obaject.number_a}} and something",
|
|
|
|
"position": "append_after",
|
|
|
|
}
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Send message in partner
|
2021-08-12 12:58:35 +02:00
|
|
|
with mute_logger("odoo.addons.mail.models.mail_render_mixin"):
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
|
|
|
body="Test",
|
|
|
|
subtype_xmlid="mail.mt_comment",
|
|
|
|
subject="Test",
|
|
|
|
)
|
2021-01-05 10:18:36 +01:00
|
|
|
# Get message and check subject
|
|
|
|
# No exception should be raised but subject should remain as original.
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_1.subject, "Test")
|
2021-01-05 10:18:36 +01:00
|
|
|
|
|
|
|
def test_no_template_default_result(self):
|
|
|
|
# Send message in partner
|
|
|
|
mail_message_1 = self.partner_1.message_post(
|
2021-08-12 12:58:35 +02:00
|
|
|
body="Test", subtype_xmlid="mail.mt_comment", subject="Test partner 1"
|
2021-01-05 10:18:36 +01:00
|
|
|
)
|
|
|
|
# Get message and check subject
|
|
|
|
# No exception should be raised but subject should remain as original.
|
2021-08-12 12:58:35 +02:00
|
|
|
self.assertEqual(mail_message_1.subject, "Test partner 1")
|