diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py index 40b407a040a..0e1fe2beb89 100644 --- a/addons/website/models/ir_qweb.py +++ b/addons/website/models/ir_qweb.py @@ -15,6 +15,7 @@ import urllib2 import urlparse import re +import werkzeug.urls import werkzeug.utils from dateutil import parser from lxml import etree, html @@ -265,16 +266,19 @@ class Image(orm.AbstractModel): if options is None: options = {} classes = ['img', 'img-responsive'] + options.get('class', '').split() - size_params = [] - if options.has_key('max_width'): - size_params.append("max_width=%i" % options['max_width']) - if options.has_key('max_height'): - size_params.append("max_height=%i" % options['max_height']) + url_params = { + 'model': record._model._name, + 'field': field_name, + 'id': record.id, + } + for options_key in ['max_width', 'max_height']: + if options.get(options_key): + url_params[options_key] = options[options_key] - return ir_qweb.HTMLSafe('' % ( + return ir_qweb.HTMLSafe('' % ( ' '.join(itertools.imap(werkzeug.utils.escape, classes)), - record._model._name, - field_name, record.id, '&'.join(size_params))) + werkzeug.urls.url_encode(url_params) + )) local_url_re = re.compile(r'^/(?P[^]]+)/static/(?P.+)$') def from_html(self, cr, uid, model, column, element, context=None): diff --git a/addons/website/models/website.py b/addons/website/models/website.py index e0aac6dbbbf..9828e9aa39d 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -555,8 +555,10 @@ class website(osv.osv): if record.get(presized): response.data = data return response - - fit = int(max_width), int(max_height) + try: + fit = int(max_width), int(max_height) + except TypeError: + fit = (maxint, maxint) w, h = image.size max_w, max_h = fit