[IMP] web: support famous 'avoid_if_small' parameter in image controller and qweb field options

Before this commit there was no option to avoid resizing images when it
was smaller than expected size. This leads to several image being displayed
with extra and unnecessary padding due to resize. This option will allow
to avoid that behavior by allowing to propagate the parameter directly
to image_resize_image.

This commit is related to task ID 31994 .
This commit is contained in:
Parth Gajjar
2018-03-15 11:30:53 +01:00
committed by Thibault Delavallée
parent f2f2dfaf36
commit 964e16a7f5
2 changed files with 4 additions and 3 deletions
+2 -2
View File
@@ -1031,7 +1031,7 @@ class Binary(http.Controller):
'/web/image/<int:id>-<string:unique>/<int:width>x<int:height>/<string:filename>'], type='http', auth="public")
def content_image(self, xmlid=None, model='ir.attachment', id=None, field='datas',
filename_field='datas_fname', unique=None, filename=None, mimetype=None,
download=None, width=0, height=0, crop=False, access_token=None):
download=None, width=0, height=0, crop=False, access_token=None, avoid_if_small=False):
status, headers, content = binary_content(
xmlid=xmlid, model=model, id=id, field=field, unique=unique, filename=filename,
filename_field=filename_field, download=download, mimetype=mimetype,
@@ -1055,7 +1055,7 @@ class Binary(http.Controller):
width = 500
if height > 500:
height = 500
content = odoo.tools.image_resize_image(base64_source=content, size=(width or None, height or None), encoding='base64', filetype='PNG')
content = odoo.tools.image_resize_image(base64_source=content, size=(width or None, height or None), encoding='base64', filetype='PNG', avoid_if_small=avoid_if_small)
# resize force png as filetype
headers = self.force_contenttype(headers, contenttype='image/png')
+2 -1
View File
@@ -42,7 +42,8 @@ class Image(models.AbstractModel):
sha = hashlib.sha1(getattr(record, '__last_update').encode('utf-8')).hexdigest()[0:7]
max_size = '' if max_size is None else '/%s' % max_size
src = '/web/image/%s/%s/%s%s?unique=%s' % (record._name, record.id, field_name, max_size, sha)
avoid_if_small = '&avoid_if_small=true' if options.get('avoid_if_small') else ''
src = '/web/image/%s/%s/%s%s?unique=%s%s' % (record._name, record.id, field_name, max_size, sha, avoid_if_small)
alt = None
if options.get('alt-field') and getattr(record, options['alt-field'], None):