2017-08-03 43 views
3

我需要从Python代码通过objectsemail_template将数据传递给电子邮件模板10

*的.py

def _alert_product_expiry(self): 
    alert_data = self.search([('alert_date','=',fields.Date.today())]) 
    if alert_data: 
     template_id = self.env.ref('alert_email_template')// Need to pass `alert_data` to template 
     send = template_id.send_mail(self.id, force_send=True) 

template_body

<field name="body_html"> 
     <![CDATA[ 
     //Retrieve that object here and perform for loop. I don't know how retrieve it. 
]]> 

    </field> 

我该怎么办?

回答

4

电子邮件模板

 <record id="email_weekly_status_sales_manager" model="email.template"> 
     <field name="name">Tickets - Weekly Status</field> 
     <field name="email_from">${user.company_id.email}</field> 
     <field name="subject">Weekly Status of Tickets</field> 
     <field name="email_to">${object.manager_mail_id}</field> 
     <field name="model_id" ref="jb_crm_claim.model_crm_claim"/> 
     <field name="auto_delete" eval="False"/> 
     <field name="body_html"><![CDATA[ 
      <p>Hi,</p>Tickets which crossed deadlines and in Progress <br><br> 

      <table width="771" cellspacing="1" cellpadding="4" border="1" height="73"> 
      <tbody> 
      <tr> 
      <th>Ticket Number</th> 
       <th>&nbsp;Customer name</th> 
       <th>Vendor name</th> 
       <th>Responsible</th> 
       <th>Status</th> 

      </tr> 
      % if object.get_record_ids(): 
       % for values in object.get_record_ids() 
       <tr> 
         <td>${values['ticket_number']}</td> 
         <td>${values['partner_name']}<br></td> 
         <td>${values['vendor_name']}</td> 
         <td>${values['user_name']}<br></td> 
         <td>${values['state']}</td> 
       </tr> 
       % endfor 
       % endif 
       </tbody></table><br> 
         <p>Thank you</p> 
     ]]></field> 
    </record> 

然后写一个Python函数的值发送到模板。在模板get_record_ids()将调用该函数并将数据传递给templte。

def get_record_ids(self): 
     ticket_ids = self.search(['|', ('state', '=', 'open'), ('state', '=', 'pending')]) 
     records=[] 
     for ticket_id in ticket_ids: 
      tickets={} 
      if ticket_id: 
       tickets['ticket_number'] = ticket_id.ticket_number 
       tickets['partner_name'] = ticket_id.partner_id.name 
       tickets['vendor_name'] = ticket_idr.vendor_id.name 
       tickets['user_name'] = ticket_id.user_id.name 
       tickets['state'] = ticket_id.state 
       records.append(tickets) 
     return records 

这个python代码会将数据发送到模板。