diff options
Diffstat (limited to 'odoo/addons/base/models/ir_qweb_fields.py')
| -rw-r--r-- | odoo/addons/base/models/ir_qweb_fields.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/odoo/addons/base/models/ir_qweb_fields.py b/odoo/addons/base/models/ir_qweb_fields.py index f7ddac0f192..9435c19af06 100644 --- a/odoo/addons/base/models/ir_qweb_fields.py +++ b/odoo/addons/base/models/ir_qweb_fields.py @@ -7,10 +7,11 @@ from odoo import api, fields, models, _, _lt from PIL import Image import babel import babel.dates -from lxml import etree +from lxml import etree, html import math from odoo.tools import html_escape as escape, posix_to_ldml, float_utils, format_date, format_duration, pycompat +from odoo.tools.mail import safe_attrs from odoo.tools.misc import get_lang, babel_locale_parse import logging @@ -651,17 +652,29 @@ class BarcodeConverter(models.AbstractModel): width=dict(type='integer', string=_('Width'), default_value=600), height=dict(type='integer', string=_('Height'), default_value=100), humanreadable=dict(type='integer', string=_('Human Readable'), default_value=0), + quiet=dict(type='integer', string='Quiet', default_value=1), + mask=dict(type='string', string='Mask', default_value='') ) return options @api.model def value_to_html(self, value, options=None): + if not value: + return '' barcode_symbology = options.get('symbology', 'Code128') barcode = self.env['ir.actions.report'].barcode( barcode_symbology, value, - **{key: value for key, value in options.items() if key in ['width', 'height', 'humanreadable']}) - return u'<img src="data:png;base64,%s">' % base64.b64encode(barcode).decode('ascii') + **{key: value for key, value in options.items() if key in ['width', 'height', 'humanreadable', 'quiet', 'mask']}) + + img_element = html.Element('img') + for k, v in options.items(): + if k.startswith('img_') and k[4:] in safe_attrs: + img_element.set(k[4:], v) + if not img_element.get('alt'): + img_element.set('alt', _('Barcode %s') % value) + img_element.set('src', 'data:image/png;base64,%s' % base64.b64encode(barcode).decode()) + return html.tostring(img_element, encoding='unicode') class Contact(models.AbstractModel): |
