summaryrefslogtreecommitdiff
path: root/odoo/addons/base/models/ir_qweb_fields.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/base/models/ir_qweb_fields.py')
-rw-r--r--odoo/addons/base/models/ir_qweb_fields.py19
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):