Skip to main content
 首页 » 编程设计

python之我如何使用 Xml Odoo 创建电子邮件模板

2024年10月17日39tuyile006

我如何使用 Xml Odoo 创建电子邮件模板

<?xml version="1.0" encoding="UTF-8"?> 
 
<openerp> 
 
<data> 
    <record id="entretien_send_email" model="email.template"> 
        <field name="name">Entretien Send by email</field> 
        <field name="model_id" ref="model_appelsoffres_entretien"/> 
        <field name="email_from">${(object.user_id.email or '')|safe}</field> 
        <field name="subject">entretien</field> 
        <field name="email_to">${(object.candidat.email or '')|safe}</field> 
        <field name="auto_delete" eval="True" /> 
        <field name="subject">Your request has been submit</field> 
        <field name="message"><![CDATA[ 
 THIS IS AN AUTOMATED EMAIL. DO NOT REPLY. 
 
Hello, 
 
We are here to inform you that the request [[object.candidat.nom]] est de    faire un entretien  [[object.titre_evenement]] with the following data: 
 
    | Request - Details 
    |========================= 
    | Titre Evenement: [[object.titre_evenement]] 
    |========================= 
    | Nom Person: [[object.candidat.nom]] 
    | Date Entretien: [[object.date_entretien]] 
    | Heure Debut: [[object.heure_debut]] 
    |========================= 
    | Heure Fin: [[object.heure_fin]] 
 
 
 Has not been confirmed and is closed. 
 
 If you have any question, do not hesitate to contact your supervisor. 
 
 Thank you!]]> 
        </field>             
       </record> 
      </data> 
 </openerp> 

在 python 中我有

 class entretien(models.Model): 
 
_name='appelsoffres.entretien' 
 
titre_evenement = fields.Char(required=True) 
 
candidat =fields.Many2one('appelsoffres.candidature',string="Candidat",required=True) 
 
email = fields.Char(required=True) 
 
telephone = fields.Char(required=True) 
 
portable = fields.Char(required=True) 
 
    state = fields.Selection([ 
 
    ('draft', "Brouillon"), 
 
    ('confirmed', "Rendez Vous Planifié"), 
 
    ('done', "Terminé"), 
 
    ('sent', "Envoyé"), 
 
], default='draft') 
 
@api.multi 
def action_draftentretien(self): 
    self.state = 'draft' 
 
@api.multi 
def action_confirmentretien(self): 
    self.state = 'confirmed' 
 
@api.multi 
def action_doneentretien(self): 
    self.state = 'done' 
 
@api.multi 
def send(self): 
    self.state = 'sent' 
 
    et_pool = self.pool.get('email.template') 
    mail_sent = et_pool.send_mail( 
    self.env.cr, 1, entretien_send_email, force_send=True,  context=self.env.context) 
 entretien() 

出现以下错误:

File "C:\Program Files (x86)\Odoo 8.0-20160222\server\.\openerp\api.py", line 266, in wrapper 
 
File "C:\Program Files (x86)\Odoo 8.0- 
 
20160222\server\openerp\addons\Appelsdoffres\AppelsOffres.py", line 224, in send 
 
ValueError: "global name 'entretien_send_email' is not defined" while evaluating u'send()' 

请您参考如下方法:

首先确保 xml 文件由 list 文件 (__openerp__.py) 加载。

你的 python 代码应该是这样的:

@api.multi 
def send(self): 
    self.state = 'sent' 
    # module_name should be replaced by the actual module name in which you have defined that custom template. 
    entretien_send_email = self.env.ref('module_name.entretien_send_email') 
    if entretien_send_email: 
        entretien_send_email.send_mail(self.id)