@@ -20,6 +20,7 @@ def setUpClass(cls):
2020 )
2121 cls .admin = new_test_user (cls .env , "boss" , "base.group_system" )
2222 new_test_user (cls .env , "worker_custom_subject" )
23+ new_test_user (cls .env , "portal_custom_subject" , "base.group_portal" )
2324 cls .subject_model = cls .env ["mail.message.custom.subject" ].with_user (cls .admin )
2425
2526 @users ("worker_custom_subject" )
@@ -210,3 +211,32 @@ def test_no_template_default_result(self):
210211 # Get message and check subject
211212 # No exception should be raised but subject should remain as original.
212213 self .assertEqual (mail_message_1 .subject , "Test partner 1" )
214+
215+ @users ("portal_custom_subject" )
216+ def test_email_subject_template_portal_user (self ):
217+ """Portal users triggering message_post via sudo (e.g. from a portal
218+ controller) must render custom subject templates without hitting ACL
219+ errors on mail.message.custom.subject — templates are admin-managed
220+ configuration records and should be read with sudo."""
221+ self .subject_model .create (
222+ {
223+ "name" : "Test portal template" ,
224+ "model_id" : self .env .ref ("base.model_res_partner" ).id ,
225+ "subtype_ids" : [(6 , 0 , [self .env .ref ("mail.mt_comment" ).id ])],
226+ "subject_template" : "{{object.name or 'n/a'}} - portal" ,
227+ }
228+ )
229+ portal_user = self .env .user
230+ self .assertTrue (portal_user .has_group ("base.group_portal" ))
231+ self .assertFalse (portal_user .has_group ("base.group_user" ))
232+ # Mimic the portal controller pattern: the caller is the portal user,
233+ # the record is sudo'd for message_post, and author_id is set to the
234+ # portal user's partner.
235+ partner = self .env ["res.partner" ].browse (self .partner_1 .id )
236+ mail_message = partner .sudo ().message_post (
237+ body = "Test from portal" ,
238+ subtype_xmlid = "mail.mt_comment" ,
239+ author_id = portal_user .partner_id .id ,
240+ )
241+ self .assertEqual (mail_message .author_id , portal_user .partner_id )
242+ self .assertEqual (mail_message .subject , "Test partner 1 - portal" )
0 commit comments