2016-12-07 2 views
2

, как я могу создать шаблон электронной почты с использованием Xml Odooкак я могу создать шаблон электронной почты с использованием 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> 

и питона У меня есть

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()' 
+0

мне было просто интересно: используемый тег OpenERP-7, но вы явно использует новый API, который был введен с помощью odoo v8. В конце вы их смешиваете. Какую версию вы используете? – CZoellner

+0

О да, спасибо за подсказку – CZoellner

+0

Не позволяйте им, как они есть. Мне тоже было интересно, как смешивать старый и новый API в конце. – CZoellner

ответ

2

Прежде всего убедитесь, что файл xml загружен файлом манифеста (__openerp__.py).

И ваш код питон должен выглядеть следующим образом:

@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)