Publicidad

miércoles, 18 de abril de 2018

Lectura Archivos Python 3 y Odoo 11

Lectura de archivos y conversión a base64




La actual migración de Python 2.7 a Python 3 para Odoo 11, fue un gran cambio en el manejo de algunos tipos de datos, por ejemplo en la lectura de un archivo que puede ser una imagen, un csv o un txt nos llega a generar errores ya que nos puede devolver una instancia IO o generarnos algunos errores, para ello me di a la tarea de indagar en el manejo interno de Odoo y el mismo me dio la solución, una pequeña linea capaz de leer cualquier archivo y convertirlo a Base64 para grabarlo en un Campo Binario de nuestra Tabla.

Primero Debemos Importar la libreria base64:

# -*- coding: utf-8 -*-

import base64



Ahora debemos obtener la ruta de la Imagen o archivo que queremos grabar en nuestra tabla, por ejemplo /tmp/qr_cfdi.png

La lectura de mi archivo y conversión quedaria de la siguiente manera:

f_b64 = base64.b64encode(open('/tmp/qr_cfdi.png','rb').read())


El paso final seria grabarlo en la tabla correspondiente, en mi caso la imagen QR necesito guardarla en la tabla de Facturas (account.invoice).

invoice_br = self.env['account.invoice].browse(ID_FACT)

invoice_br.cfdi_cbb = f_b64

# Utilizando el Metodo Write:

invoice_br.write({'cfdi_cbb':f_b64})



El ejemplo anterior utiliza el metodo browse para poder obtener una instancia de Facturas del registro en el cual quiero grabar la imagen obtenida de otro proceso, el campo cfdi_cbb es un binario de la tabla donde quiero guardar la imagen y el resultado podria observarse como la siguiente imagen:




0 comentarios:

Publicar un comentario