Ошибка: save () получил неожиданный аргумент ключевого слова 'format' - PullRequest
0 голосов
/ 26 июня 2018

Я использую odoo 9 и пытаюсь установить пользовательский модуль с именем odoo_qr_code, который позволяет добавлять код qr в форму продуктов и создавать образ qr для продуктов и вариантов продуктов. Но когда я нажимаю сохранить после добавления моего кода QR в формы продукта, это показывает ошибку. Любая помощь, пожалуйста?

File "D:\Projet_Odoo\odoo-9.0rc20180515\openerp\addons\odoo_qr_code\models\models.py", line 23, in _generate_qr_code
img.save(buffer, format="PNG")
TypeError: save() got an unexpected keyword argument 'format'

models.py

import base64
import cStringIO

import qrcode
from openerp import models, fields, api


class ProductTemplateQRCode(models.Model):
_inherit = 'product.template'

@api.multi
@api.depends('product_qr_code')
def _generate_qr_code(self):
    qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=20, border=4)
    if self.product_qr_code:
        name = self.product_qr_code + '_product.png'
        qr.add_data(self.product_qr_code)
        qr.make(fit=True)
        img = qr.make_image()
        buffer = cStringIO.StringIO()
        img.save(buffer, format="PNG")
        qrcode_img = base64.b64encode(buffer.getvalue())
        self.update({'qr_code': qrcode_img, 'qr_code_name': name})

product_qr_code = fields.Char('QR Code')
qr_code = fields.Binary('QR Code', compute="_generate_qr_code")
qr_code_name = fields.Char(default="qr_code.png")


class ProductProductQRCode(models.Model):
_inherit = 'product.product'

@api.multi
@api.depends('product_qr_code')
def _generate_qr_code(self):
    qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=20, border=4)
    if self.product_qr_code:
        name = self.product_qr_code + '_product.png'
        qr.add_data(self.product_qr_code)
        qr.make(fit=True)
        img = qr.make_image()
        buffer = cStringIO.StringIO()
        img.save(buffer, format="PNG")
        qrcode_img = base64.b64encode(buffer.getvalue())
        self.update({'qr_code': qrcode_img, 'qr_code_name': name})

1 Ответ

0 голосов
/ 27 июня 2018

Ошибка гласит, что функция save не принимает аргумент format. Поэтому вам нужно удалить его (из обеих функций).

Вы можете сослаться на эту эту ссылку для how to create QR code in python.

Надеюсь, это поможет вам.

...