콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다

I want an email to automatically appear in the chatter of a module after it was sent. I create the email by overriding 

def _send_mail(self, answer):

res = super()._send_mail(answer)

email_values = {

"auto_delete": False,

"model": "survey.survey",

"res_id": self.survey_id.id,

}


res.update(email_values)

return res

How can I achieve the desired result? After the email was sent, it doesn't appear in the chatter of the survey. Thanks in advance!

아바타
취소
베스트 답변

Hii,

You're overriding _send_mail() and returning res, which may be an email template or dict of values, but you're not actually calling message_post, nor guaranteeing the email is sent with the right linkage to log in the chatter.

Here’s how to ensure the email appears in the chatter of the related survey.survey record:

from odoo import models class YourModel(models.Model): _inherit = 'your.model' def _send_mail(self, answer): res = super()._send_mail(answer) survey = self.survey_id # Prepare email values email_values = { 'auto_delete': False, 'model': 'survey.survey', 'res_id': survey.id, } # If res is a mail.template: if isinstance(res, dict): res.update(email_values) elif hasattr(res, 'write'): res.write(email_values) # Optional: Post a message to chatter manually (if not posted automatically) survey.message_post( body="An email was sent to the user.", message_type="notification", subtype_xmlid="mail.mt_note", ) return res

i hope it is use full

아바타
취소
관련 게시물 답글 화면 활동
2
8월 24
1759
3
10월 18
7754
0
12월 16
4042
2
2월 25
3246
2
2월 25
1701