отчет openerp, похоже, кэширует данные изображения

#reportlab #openerp #rml

#reportlab #odoo #rml

Вопрос:

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

 <section>
 [[ repeatIn(o.order_line, 'l') ]]
<blockTable colWidths="250.0,92.0,21.0,80.0,85.0" style="Tamp;#xE1;blamp;#xE1;zat2">
  <tr>
    <td>
      <para style="P13">[[ l.name ]]</para>
    </td>
    <td>
      <para style="terp_default_Right_9">[[ formatLang(l.product_uos and l.product_uos_qty or l.product_uom_qty, digits=0) ]] </para>
    </td>
    <td>
      <para style="P13">[[ l.product_uos and l.product_uos.name or l.product_uom.name ]]</para>
    </td>
    <td>
      <para style="P9">[[ formatLang(l.price_unit, digits=0 ) ]] [[ o.pricelist_id.currency_id.name ]]</para>
    </td>
    <td>
      <para style="P9">[[ formatLang(l.price_subtotal, digits=0) ]] [[ o.pricelist_id.currency_id.name ]]</para>
    </td>
  </tr>
</blockTable>

<para style="P15">
  [[ l.product_id.description_sale ]]
</para>

<image height="260" width="520">[[ o.state=='draft' and get_product_attachment(1, l.product_id) or removeParentNode('image')]]</image>

</section>
  

(Существует много таких тегов изображений с разными индексами. Я только что удалил код.)

затем мой генератор отчетов определяет

 def get_product_attachment(self, index, product):
    context = {}
    attach = self.pool.get('ir.attachment').search(self.cr, self.uid, [('res_id','=',product.id), ('name','ilike', 'pict%d' % index)])
    attach = attach and self.pool.get('ir.attachment').browse(self.cr, self.uid, attach[0]) or False
    if attach:
        print 'a', product.id, index, attach, attach.datas[:30]
        return attach.datas
    else:
        return False
  

кажется, что все это работает нормально, инструкция print показывает разные результаты, но не окончательный PDF!

в pdf все изображения одинаковы для данного индекса.

Есть идеи?

Комментарии:

1. Это было признано ошибкой в openerp и уже исправлено.

Ответ №1:

У меня была такая же проблема.

Я заменил:

 <image width='6cm' height='6cm'>[[ item['image'] ]]</image>
  

с:

 <para>[[ item['image'] and setTag('para','image',{'width':'6cm','height':'6cm'}) ]][[ item['image'] ]]</para>
  

и моя проблема была решена.

В переводе на вашу проблему это должно быть что-то вроде:

 <para>[[ o.state=='draft' and get_product_attachment(1, l.product_id) and  setTag('para','image',{'width':'260','height':'510'})]][[get_product_attachment(1, l.product_id)]]</image>
  

(это, вероятно, содержит много ошибок, rml не моя специальность, но при некоторой отладке это должно сработать)

Ответ №2:

Это было признано ошибкой в openerp и уже исправлено.