From 66f886e4808fa9ba1f42beb1b5ab3d43d0bf2ba2 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Thu, 24 Mar 2022 14:57:36 +0000 Subject: [PATCH] [FIX] website_event_*exhibitor,(q)web: don't crash sponsor if no name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Field name on sponsor are not required. So when we display the image of a sponsor without field-name it will use the rec_name 'name' that is not set and so False. It will crash during rendering of the widget image that use it. Now we force to use a field required 'partner_name' to avoid the crash. By default, when you confirm the sale_order from the backend, we copy the partner name in field name. Because we use a class avatar to have a max-width of 96, we don't need to use a image_512, image_128 is enough in most of case. The max-width option on widget image has no effect on rendering. In other case where the rec_name is Falsy and we don't provide other name to the widget, we now use a default 'name' value to avoid a crash: closes odoo/odoo#88296 Attributeerror: 'bool' object has no attribute 'replace' X-original-commit: b054dfc715afb225eb032a722ec58e6888b1b905 Signed-off-by: Jérémy Kersten --- addons/web/models/ir_qweb_fields.py | 2 +- .../website_event_booth_exhibitor/models/event_booth.py | 3 +++ .../views/event_exhibitor_templates_page.xml | 8 ++++---- .../views/event_templates_sponsor.xml | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/addons/web/models/ir_qweb_fields.py b/addons/web/models/ir_qweb_fields.py index 57f39c7a404..f3625e9f967 100644 --- a/addons/web/models/ir_qweb_fields.py +++ b/addons/web/models/ir_qweb_fields.py @@ -45,7 +45,7 @@ class Image(models.AbstractModel): filename = options['filename'] else: filename = record.display_name - filename = filename.replace('/', '-').replace('\\', '-').replace('..', '--') + filename = (filename or 'name').replace('/', '-').replace('\\', '-').replace('..', '--') src = '/web/image/%s/%s/%s%s/%s?unique=%s' % (record._name, record.id, options.get('preview_image', field_name), max_size, url_quote(filename), sha) diff --git a/addons/website_event_booth_exhibitor/models/event_booth.py b/addons/website_event_booth_exhibitor/models/event_booth.py index 8e9d7f99381..48bac22fe6e 100644 --- a/addons/website_event_booth_exhibitor/models/event_booth.py +++ b/addons/website_event_booth_exhibitor/models/event_booth.py @@ -40,6 +40,9 @@ class EventBooth(models.Model): 'partner_id': self.partner_id.id, **{key.partition('sponsor_')[2]: value for key, value in vals.items() if key.startswith('sponsor_')}, } + # If confirmed from backend, we don't have _prepare_booth_registration_values + if not values.get('name'): + values['name'] = self.partner_id.name if self.booth_category_id.exhibitor_type == 'online': values.update({ 'room_name': 'odoo-exhibitor-%s' % self.partner_id.name, diff --git a/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml b/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml index ee237d93b16..843c17d2862 100644 --- a/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml +++ b/addons/website_event_exhibitor/views/event_exhibitor_templates_page.xml @@ -100,10 +100,10 @@
- - + +
diff --git a/addons/website_event_exhibitor/views/event_templates_sponsor.xml b/addons/website_event_exhibitor/views/event_templates_sponsor.xml index 8919bab350e..eae65320af8 100644 --- a/addons/website_event_exhibitor/views/event_templates_sponsor.xml +++ b/addons/website_event_exhibitor/views/event_templates_sponsor.xml @@ -30,7 +30,7 @@