Python 通过继承MaintenanceRequest模型,将新请求通知维护团队成员

Python 通过继承MaintenanceRequest模型,将新请求通知维护团队成员,python,odoo,odoo-12,Python,Odoo,Odoo 12,我希望在特定团队中创建新请求时通知所有维护团队成员 目前,我通过以下自动操作处理此功能: Python代码: body_html=”“” ... “+record.name+” ... """ 成员数=len(记录、维护、团队id、成员id) 如果成员数为: 成员_电子邮件=[] 对于范围内的i(成员数): members\u emails.append(record.maintenance\u team\u id.member\u id[i].email) 电子邮件发送至=“,”。加入(成员

我希望在特定团队中创建新请求时通知所有维护团队成员

目前,我通过以下自动操作处理此功能:

Python代码:

body_html=”“”
...
“+record.name+”
...
"""
成员数=len(记录、维护、团队id、成员id)
如果成员数为:
成员_电子邮件=[]
对于范围内的i(成员数):
members\u emails.append(record.maintenance\u team\u id.member\u id[i].email)
电子邮件发送至=“,”。加入(成员电子邮件)
mail_pool=env['mail.mail']
值={}
更新({'subject':'New maintenance request-'+record.company_id.name})
更新({'email\u to':email\u to})
update({'body\u html':body\u html})
msg\u id=mail\u pool.create(值)
如果msg_id:
邮件池发送([msg\u id])
但是现在我想把这个解决方案转换成一个自定义模块。正确的方法是什么

我是否应该继承
maintenance.request
,重写create方法并以硬编码电子邮件正文的方式发送我的电子邮件

类维护请求(models.Model):
_inherit='maintenance.request'
@api.model
def创建(自身、VAL):
req=super(维护请求,自我)。创建(VAL)
body_html=“”
...
“+req.name+”
...
"""
# ...
如果msg_id:
邮件池发送([msg\u id])
返回请求

或者有一种方法可以将自己连接到一个用于发送通知的预制函数,并告诉它也为团队成员运行?我不想将他们全部添加为关注者(因为他们会收到关于请求的不必要更新的垃圾邮件)-只想通知他们新请求,然后他们可以在需要时跟进。

我会在自定义模块中创建一个
mail.template
,并在其中动态设置成员电子邮件列表。在Odoo中已经有一些简单的邮件模板示例可供研究

在代码中,您只需使用此模板发送邮件


我的邮件模板
${“,”.join(映射(str,object.maintenance\u team\u id.member\u id.mapped('partner\u id').id)))
@api.model
def创建(自身、值):
记录=超级()。创建(值)
template_id=self.env.ref('my_module.my_mail_template').id
如果模板id为:
使用模板(模板id)记录消息发布
返回记录

谢谢您的回复!但是我很难让这个代码正常工作。没有电子邮件与它一起发送。你为什么让super()空着?这是我的模型。py:。以下是mail_template.xml:。下面是清单:空
super()
是可能的,因为Python3。调用类
MaintenanceRequest
并完全删除
\u name
。剩下的看起来没问题,所以我就这么做了,但遗憾的是仍然没有生成电子邮件。这是我的
models.py
now:。新的电子邮件模板在开发者界面中可见。查看日志以获取完整错误。但至少奥多尝试了一次,所以你走对了,你是对的。在日志
/var/log/odoo/odoo server.log
中,我看到了以下内容:
jinja2.exceptions.UndefinedError:'odoo.api.maintenance.request object'没有属性“partner\u id”
。原来邮件模板中的这行代码有问题:
${object.partner\u id.lang}
。我删除了它,现在它工作正常(我必须删除以前创建的模板,然后再次加载模块)。