сгенерировать изображение из кода pythob и добавить его в двоичное поле odoo - PullRequest
0 голосов
/ 09 ноября 2018

Я сейчас нахожусь в odoo 11 Я занимаюсь разработкой пользовательского модуля. Я создал кнопку, которая выполняет рендеринг вида мастера, в этом окне мастера есть двоичное поле .... Я хочу, чтобы когда я нажимал кнопку Я сгенерирую изображение или текст и добавлю его в двоичное поле, которое позволит мне загрузить текст или изображение ниже. Я покажу вам следующий пример:

Это кнопка, которую я создал: введите описание изображения здесь

При указании клика muentra следующее:

введите описание изображения здесь

Ну, проблема в следующем:

Когда я создаю свое двоичное поле в моей модели:

class RegisterBulk (models.Model):
    _name = 'stock.order.package'
    n_bulk = fields.Integer(string = 'n° Nulto')
    n_order = fields.Char(string = 'n° Pedido')
    weight = fields.Float(string = 'Peso' , required = True)
    context_products = fields.Many2many('stock.table.products',string = 'Productos')
    bar_bulk = fields.Char(string = 'Codigo del Bulto')
    file = fields.Binary('Etiqueta' ,readonly = True)

который называется file, и в моем xml я думаю это следующим образом:

<div class="col-xs-6">
       <field name="file" filename="sale_order_data" />
</div>

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

        pdf_file = open('data.txt', 'w+')
        if pdf_file:
            print "paso"
            salida = 'PRuebaaaaaaaaaa'
            pdf_file.write(salida)



        return {
            'name': ('Regsitro de Bulto'),
            'view_type': 'form',
            'view_mode': 'form',
            'res_model': 'stock.order.package',
            'view_id': False,
            'type': 'ir.actions.act_window',
            'target': 'new',
            'context': {
                'default_n_order': self.name,
                'default_n_bulk': t_bulk ,
                'default_context_products': products,
                'default_bar_bulk': code,
                'default_file': base64.encodestring(pdf_file),


            },
        }

но когда я нажимаю кнопку, я получаю эту ошибку:

  File "c:\python27\Lib\base64.py", line 320, in encodestring
    for i in range(0, len(s), MAXBINSIZE):
TypeError: object of type 'file' has no len()

наконец, сейчас я просто пытаюсь передать txt, идеал - это изображение, которое я создам с помощью библиотеки pillow и zpl, но чтобы иметь представление о том, что я делаю с txt, но я получаю упомянутую ошибку выше.

...