Merge PR #1016 into 15.0

Signed-off-by rafaelbn
This commit is contained in:
OCA-git-bot 2022-12-02 09:38:50 +00:00
commit b44d3bf1c6
3 changed files with 92 additions and 71 deletions

View File

@ -17,5 +17,5 @@
"views/mail_notification_custom_subject_views.xml", "views/mail_notification_custom_subject_views.xml",
], ],
"development_status": "Production/Stable", "development_status": "Production/Stable",
"maintainers": ["joao-p-marques"], "maintainers": ["yajo"],
} }

View File

@ -33,8 +33,16 @@ class MailThread(models.AbstractModel):
raise_if_not_found=False, raise_if_not_found=False,
) )
if subtype_id: if subtype_id:
custom_subjects = self.env["mail.message.custom.subject"].search( custom_subjects = (
[("model_id.model", "=", self._name), ("subtype_ids", "=", subtype_id)] self.env["mail.message.custom.subject"]
.sudo()
.search(
[
("model_id.model", "=", self._name),
("subtype_ids", "=", subtype_id),
]
)
.sudo(False)
) )
if not subject: if not subject:
subject = "Re: %s" % self.env["mail.message"].with_context( subject = "Re: %s" % self.env["mail.message"].with_context(

View File

@ -20,16 +20,22 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
] ]
) )
) )
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")
def test_email_subject_template_overrides(self): def test_email_subject_template_overrides(self):
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 1",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{object.name or 'n/a'}} and something more", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
} "subject_template": "{{object.name or 'n/a'}} and something more",
) }
)
# Send message in partner # Send message in partner
mail_message_1 = self.partner_1.message_post( mail_message_1 = self.partner_1.message_post(
body="Test", subtype_xmlid="mail.mt_comment" body="Test", subtype_xmlid="mail.mt_comment"
@ -52,14 +58,15 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
self.assertEqual(mail_message_3.subject, "Test partner 2 and something more") self.assertEqual(mail_message_3.subject, "Test partner 2 and something more")
def test_email_subject_template_normal(self): def test_email_subject_template_normal(self):
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 1",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{object.name or 'n/a'}} and something more", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
} "subject_template": "{{object.name or 'n/a'}} and something more",
) }
)
# Send note in partner # Send note in partner
mail_message_1 = self.partner_1.message_post( mail_message_1 = self.partner_1.message_post(
body="Test", subtype_xmlid="mail.mt_note", subject="Test" body="Test", subtype_xmlid="mail.mt_note", subject="Test"
@ -68,22 +75,24 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
self.assertEqual(mail_message_1.subject, "Test") self.assertEqual(mail_message_1.subject, "Test")
def test_email_subject_template_multi(self): def test_email_subject_template_multi(self):
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 1",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{object.name or 'n/a'}} and something more", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
} "subject_template": "{{object.name or 'n/a'}} and something more",
) }
self.env["mail.message.custom.subject"].create( )
{ with self.with_user("boss"):
"name": "Test template 2", self.env["mail.message.custom.subject"].create(
"model_id": self.env.ref("base.model_res_partner").id, {
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "name": "Test template 2",
"subject_template": "{{object.name or 'n/a'}} and something different", "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",
}
)
# Send message in partner # Send message in partner
mail_message_1 = self.partner_1.message_post( mail_message_1 = self.partner_1.message_post(
body="Test", subtype_xmlid="mail.mt_comment" body="Test", subtype_xmlid="mail.mt_comment"
@ -92,15 +101,16 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
self.assertEqual( self.assertEqual(
mail_message_1.subject, "Test partner 1 and something different" mail_message_1.subject, "Test partner 1 and something different"
) )
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 3",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{' and yet something else'}}", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
"position": "append_after", "subject_template": "{{' and yet something else'}}",
} "position": "append_after",
) }
)
# Send message in partner # Send message in partner
mail_message_2 = self.partner_1.message_post( mail_message_2 = self.partner_1.message_post(
body="Test", subtype_xmlid="mail.mt_comment" body="Test", subtype_xmlid="mail.mt_comment"
@ -110,15 +120,16 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
mail_message_2.subject, mail_message_2.subject,
"Test partner 1 and something different and yet something else", "Test partner 1 and something different and yet something else",
) )
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 4",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{'Re: '}}", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
"position": "append_before", "subject_template": "{{'Re: '}}",
} "position": "append_before",
) }
)
# Send message in partner # Send message in partner
mail_message_3 = self.partner_1.message_post( mail_message_3 = self.partner_1.message_post(
body="Test", subtype_xmlid="mail.mt_comment" body="Test", subtype_xmlid="mail.mt_comment"
@ -130,15 +141,16 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
) )
def test_email_subject_template_w_original(self): def test_email_subject_template_w_original(self):
self.env["mail.message.custom.subject"].create( 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, "name": "Test template 1",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{' and something more'}}", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
"position": "append_after", "subject_template": "{{' and something more'}}",
} "position": "append_after",
) }
)
# Send message in partner # Send message in partner
mail_message_1 = self.partner_1.message_post( mail_message_1 = self.partner_1.message_post(
body="Test", body="Test",
@ -150,15 +162,16 @@ class TestMailNotificationCustomSubject(common.TransactionCase):
def test_bad_template_does_not_break(self): def test_bad_template_does_not_break(self):
"""Create template with error (obaject) to test error.""" """Create template with error (obaject) to test error."""
self.env["mail.message.custom.subject"].create( 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, "name": "Test bad template 1",
"subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])], "model_id": self.env.ref("base.model_res_partner").id,
"subject_template": "{{obaject.number_a}} and something", "subtype_ids": [(6, 0, [self.env.ref("mail.mt_comment").id])],
"position": "append_after", "subject_template": "{{obaject.number_a}} and something",
} "position": "append_after",
) }
)
# Send message in partner # Send message in partner
with mute_logger("odoo.addons.mail.models.mail_render_mixin"): with mute_logger("odoo.addons.mail.models.mail_render_mixin"):
mail_message_1 = self.partner_1.message_post( mail_message_1 = self.partner_1.message_post(