以下を試してください。私はodooのモジュールを書く方法についての基本的な知識を期待しています。
最初の手順 電子メールテンプレートを追加して管理者に送信します。 /your_module_name/data/data.xmlファイルをモジュールに追加することでそれを行うことができます。そして次のコードでそれを記入してください。
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="mail_to_admin_when_task_changed" model="email.template">
<field name="name">Notification for admin</field>
<field name="email_from">${object.user_id.login}</field>
<field name="subject">Task state changed</field>
<field name="email_to">[email protected]</field>
<field name="model_id" ref="project.model_project_task"/>
<field name="lang">${object.user_id.lang}</field>
<field name="body_html"><![CDATA[
Hello admin, the new state for <b>${object.name}</b> is <b>${object.state}</b>.
]]></field>
</record>
</data>
</openerp>
レジストあなたdata.xmlのデータ・リストへのパスを追加することで、あなたの__openerp__.py
からファイル。
# ...other openerp definition
'data': [
'data/data.xml'
#...paths to views
],
# ...other openerp definition
第二工程 project.task
モデルにおけるwrite()
方法を上書き。 project.task
モデルを継承することでそれを行うことができます。 モデルフォルダーにproject_task.py
を作成してください。 __init__.py
に登録してください。次に、project_task.py
に次のコードを書いてください。
# -*- coding: utf-8 -*-
from openerp import models, fields, api, osv
class project_task(models.Model):
_inherit = "project.task"
def write(self,cr,uid,ids,vals,context=None):
mtp = self.pool.get('email.template')
mail_to_admin_template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'your_module_name', 'mail_to_admin_when_task_changed')[1]
if "state" in vals:
for id in ids:
mtp.send_mail(cr,uid,mail_to_admin_template_id,id,force_send=True,context=context)
return super(project_task,self).write(cr,uid,ids,vals,context=context)
編集が必要な場合は教えてください。
あなたの質問を編集して追加してください:1.あなたのコード/あなたの試み2.あなたの入力、現在の出力と期待される出力 –
期待どおりの結果を更新しました。あなたの終わりからの返信を期待しています。ありがとう –
タスクでは、* project.task *モデルのエントリを意味しますか?右? – Nope