在我的OpenERP模块中,我偶尔需要向用户发送通知或消息,但使用res.users.message_post
的明显方式(至少对我来说)在用户记录上放置了一条消息,而不是将消息发送到用户。有什么想法吗?
答案 0 :(得分:1)
在发送消息之前,您需要安装Social Network
模块(如果您想查看其代码,则它位于.../addons/mail
中。)
之后,以下代码片段将完成此任务:
from openerp import SUPERUSER_ID
def send_message(oe, cr, user_ids, subject, body):
"sends message to user_ids"
mail_message = oe.pool.get('mail.message')
mail_message_subtype = oe.pool.get('mail.message.subtype')
[discussion_id] = mail_message_subtype.browse(
cr, SUPERUSER_ID, [('name','=','Discussions')]
)
users = oe.pool.get('res.users').search(cr, uid, user_ids)
mail_message.create(cr, SUPERUSER_ID, values=dict(
type='email',
subtype_id=discussion.id,
partner_ids=[(4, u.partner_id.id) for u in users],
subject=subject,
body=body,
))
将它放在某处的实用程序模块中,你就可以了。
一对评论:
self
作为第一个参数传递
send_message(self, cr, ...)
oe
替换为self
,并从参数中省略self