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)