将数据从python代码Odoo 10传递到电子邮件模板

Kbi*_*biR 4 openerp odoo-10

我需要从python代码传递objectsemail_template

* .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)
Run Code Online (Sandbox Code Playgroud)

template_body

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

  </field>
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

sfx*_*sfx 5

电子邮件范本

      <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>
Run Code Online (Sandbox Code Playgroud)

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

 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
Run Code Online (Sandbox Code Playgroud)

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