[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:
committed by
Thibault Delavallée
parent
f2f2dfaf36
commit
964e16a7f5
@@ -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')
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user