From 964e16a7f5598b6f2f5be75c9e591deabfaeccff Mon Sep 17 00:00:00 2001 From: Parth Gajjar Date: Thu, 16 Nov 2017 12:40:22 +0530 Subject: [PATCH] [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 . --- addons/web/controllers/main.py | 4 ++-- addons/web/models/ir_qweb.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 6af25b7eaa0..fd24d253c21 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1031,7 +1031,7 @@ class Binary(http.Controller): '/web/image/-/x/'], 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') diff --git a/addons/web/models/ir_qweb.py b/addons/web/models/ir_qweb.py index 5c94da64d53..a7376e04b5d 100644 --- a/addons/web/models/ir_qweb.py +++ b/addons/web/models/ir_qweb.py @@ -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):