динамическое добавление изображений в файл отчета openerp rml - PullRequest
1 голос
/ 23 февраля 2011

Я хочу сделать что-то подобное в отчете openerp, как мне нужно будет создать этот путь к файлу:

<image file="images\[[o.name]]" x="72" y="72"/>

Существуют ли способы создания переменных в rml, которые я мог бы затем передать в атрибут file =.

У меня мало знаний о питоне, но я бы хотел, чтобы это было решено.

Сейчас я пытаюсь настроить order.rml, я могу загружать изображения, но только статически ...

Ответы [ 4 ]

7 голосов
/ 25 февраля 2011

В файле отчетов .py добавьте функцию python, например:

self.localcontext.update({
            'time': time,
            'image_url' : self._get_imagepath,
        })

def _get_imagepath(self,product):
        attach_ids = self.pool.get('ir.attachment').search(self.cr, self.uid, [('res_model','=','product.product'), ('res_id', '=',product)])
        datas = self.pool.get('ir.attachment').read(self.cr, self.uid, attach_ids)
        if len(datas):
            # if there are several, pick first
            try:
                if datas[0]['link']:
                    try:
                        img_data =  base64.encodestring(urllib.urlopen(datas[0]['link']).read())
                        return img_data
                    except Exception,innerEx:
                        print innerEx
                elif datas[0]['datas']:
                    return datas[0]['datas']
            except Exception,e:
                print e
        return None

, в самом rml вызовите функцию следующим образом:

<para>[[ image_url(o['id']) and setTag('para','image') or removeParentNode('para') ]][[ image_url(o['id']) ]]</para>
1 голос
/ 21 октября 2014

Поскольку я не могу комментировать решение Алана Белла, боюсь, мне придется исправить его в отдельном ответе.

Алан написал, что вы можете просто использовать:

<image>o.company_id.logo</image>

Этоне совсем правильно;Вы должны заключить выражение в двойные квадратные скобки следующим образом:

<image>[[ o.company_id.logo ]]</image>

Для атрибутов, которые вы можете передать тегу изображения, я перенаправлю вас к документации RML: http://www.reportlab.com/docs/rml2pdf-userguide.pdf

1 голос
/ 19 апреля 2012

также вы можете сделать следующее в

<header> 
<pageTemplate>
<frame id="first" x1="1.3cm" y1="2.5cm" height="23.0cm" width="19cm"/>
  <pageGraphics>
    <image file= "/home/workspace/openERP/src/openerp-server/pixmaps/client-logo.png"    x="3.3cm" y="3.5cm" height="32.0"/>
  </pageGraphics> 
</pageTemplate> 

1 голос
/ 11 марта 2011

Вы можете просто сделать

<image>o.company_id.logo</image>

или ссылаться на свое изображение любым способом, который имеет смысл, что можно будет отобразить логотип компании в форме заказа, вы можете добавить поля изображений в свои продукты и отображать их наесли хотите, позиции.

...