From 6fc08a88ae5151b3378d01a2d963e0c4d3734a32 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Thu, 21 Feb 2019 13:45:27 +0000 Subject: [PATCH] [FIX] web_unsplash: save image for res_model Go on the website, create a new product from there Click on the image to change it, select an unsplash image Save your product. Beforer this commit, the image wasn't saved because the qweb field image did not know what to do with /unsplash/ urls After this commit, the image is saved on the product (or any object...) OPW 1936191 closes odoo/odoo#31328 --- addons/web_unsplash/models/__init__.py | 1 + addons/web_unsplash/models/ir_qweb.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 addons/web_unsplash/models/ir_qweb.py diff --git a/addons/web_unsplash/models/__init__.py b/addons/web_unsplash/models/__init__.py index 63a963dae32..ffce82298b0 100644 --- a/addons/web_unsplash/models/__init__.py +++ b/addons/web_unsplash/models/__init__.py @@ -3,3 +3,4 @@ from . import res_config_settings from . import res_users +from . import ir_qweb diff --git a/addons/web_unsplash/models/ir_qweb.py b/addons/web_unsplash/models/ir_qweb.py new file mode 100644 index 00000000000..8d581c47299 --- /dev/null +++ b/addons/web_unsplash/models/ir_qweb.py @@ -0,0 +1,26 @@ +from werkzeug import urls + +from odoo import models, api + + +class Image(models.AbstractModel): + _inherit = 'ir.qweb.field.image' + + @api.model + def from_html(self, model, field, element): + url = element.find('img').get('src') + url_object = urls.url_parse(url) + + if url_object.path.startswith('/unsplash/'): + res_id = element.get('data-oe-id') + if res_id: + res_id = int(res_id) + res_model = model._name + attachment = self.env['ir.attachment'].search([ + ('res_model', '=', res_model), + ('res_id', '=', res_id), + ('url', '=', url_object.path), + ], limit=1) + return attachment.datas + + return super(Image, self).from_html(model, field, element)