[FIX] website: fix logo not supporting new image url format

In a recent commit, we decided to change the image url format generated
by the media-dialog to leverage browser caching using unique.
Unfortunately, when saving an img tag to a binary field, the url parsing
did not support this new url format, causing a traceback when changing
the website logo and attempting to save.

closes odoo/odoo#48914

X-original-commit: 9c618c7f903f1a0b32e067cfd713cd39762250f9
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
This commit is contained in:
Samuel Degueldre
2020-04-02 18:49:03 +00:00
parent 9ae9e7e0a6
commit bf9d864fb0
+6 -4
View File
@@ -359,16 +359,18 @@ class Image(models.AbstractModel):
url_object = urls.url_parse(url)
if url_object.path.startswith('/web/image'):
# url might be /web/image/<model>/<id>[_<checksum>]/<field>[/<width>x<height>]
fragments = url_object.path.split('/')
query = url_object.decode_query()
if fragments[3].isdigit():
url_id = fragments[3].split('-')[0]
# ir.attachment image urls: /web/image/<id>[-<checksum>][/...]
if url_id.isdigit():
model = 'ir.attachment'
oid = fragments[3]
oid = url_id
field = 'datas'
# url of binary field on model: /web/image/<model>/<id>/<field>[/...]
else:
model = query.get('model', fragments[3])
oid = query.get('id', fragments[4].split('_')[0])
oid = query.get('id', fragments[4])
field = query.get('field', fragments[5])
item = self.env[model].browse(int(oid))
return item[field]