[FIX] mail: be more defensive when previewing fields
Sometimes due to new ids / not existing records for previewing crash may happen when rendering the preview of templates. In this commit we rewrite a bit the computation to try to be more resistant. Task-3093257 (Mail: The Composer Update) Part-of: odoo/odoo#107356
This commit is contained in:
@@ -71,26 +71,20 @@ class MailTemplatePreview(models.TransientModel):
|
||||
""" Preview the mail template (body, subject, ...) depending of the language and
|
||||
the record reference, more precisely the record id for the defined model of the mail template.
|
||||
If no record id is selectable/set, the inline_template placeholders won't be replace in the display information. """
|
||||
copy_depends_values = {'lang': self.lang}
|
||||
mail_template = self.mail_template_id.with_context(lang=self.lang)
|
||||
try:
|
||||
if not self.resource_ref.id:
|
||||
self._set_mail_attributes()
|
||||
else:
|
||||
copy_depends_values['resource_ref'] = '%s,%s' % (self.resource_ref._name, self.resource_ref.id)
|
||||
if not self.resource_ref or not self.resource_ref.id:
|
||||
self._set_mail_attributes()
|
||||
else:
|
||||
try:
|
||||
mail_values = mail_template.with_context(template_preview_lang=self.lang)._generate_template(
|
||||
[self.resource_ref.id],
|
||||
self._MAIL_TEMPLATE_FIELDS
|
||||
)[self.resource_ref.id]
|
||||
self._set_mail_attributes(values=mail_values)
|
||||
self.error_msg = False
|
||||
except (ValueError, UserError) as user_error:
|
||||
self._set_mail_attributes()
|
||||
self.error_msg = user_error.args[0]
|
||||
finally:
|
||||
# Avoid to be change by a cache invalidation (in generate_mail), e.g. Quotation / Order report
|
||||
for key, value in copy_depends_values.items():
|
||||
self[key] = value
|
||||
self.error_msg = False
|
||||
except (ValueError, UserError) as user_error:
|
||||
self._set_mail_attributes()
|
||||
self.error_msg = user_error.args[0]
|
||||
|
||||
def _set_mail_attributes(self, values=None):
|
||||
for field in self._MAIL_TEMPLATE_FIELDS:
|
||||
|
||||
Reference in New Issue
Block a user