Попробуйте следующее. Я ожидаю базовых знаний о том, как написать модуль для 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>
Regist ваш data.xml файл на свой __openerp__.py
, добавив путь к данн-список.
# ...other openerp definition
'data': [
'data/data.xml'
#...paths to views
],
# ...other openerp definition
Второй шаг Перезапись метод write()
в project.task
модели. Вы можете сделать это, наследуя модель 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 * model? Правильно? – Nope