From 1184f7872d6776d744c7a516d3fcac99467f1c19 Mon Sep 17 00:00:00 2001 From: Pratima Gupta Date: Wed, 14 Mar 2018 11:16:17 +0530 Subject: [PATCH] [IMP] mail: ease the use and specification of notification emails layout This commit proposes to ease the use and specification of layout used to encapsulate email body when sending notification emails. This is done through two means * message_post_with_template now supports the custom layout parameter that allows to set the layout to use when sending notification emails in the message_post process. We have to rely on the context as it is the current way of using it in the composer. It is likely to change in a near future; * composer now supports through context (as we have no other choice) specific notification values to give to the notification layout rendering; This commit is related to task 51122 (and PR #24052). --- addons/mail/models/mail_thread.py | 2 ++ addons/mail/models/res_partner.py | 2 +- addons/mail/wizard/mail_compose_message.py | 10 ++++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 4f89da3b69e..a70e4d65205 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -2076,6 +2076,7 @@ class MailThread(models.AbstractModel): kwargs['message_type'] = 'notification' res_id = kwargs.get('res_id', self.ids and self.ids[0] or 0) res_ids = kwargs.get('res_id') and [kwargs['res_id']] or self.ids + notif_layout = kwargs.pop('notif_layout', None) # Create the composer composer = self.env['mail.compose.message'].with_context( @@ -2086,6 +2087,7 @@ class MailThread(models.AbstractModel): default_model=kwargs.get('model', self._name), default_res_id=res_id, default_template_id=template_id, + custom_layout=notif_layout, ).create(kwargs) # Simulate the onchange (like trigger in form the view) only # when having a template in single-email mode diff --git a/addons/mail/models/res_partner.py b/addons/mail/models/res_partner.py index 07bee0bb6e6..d9fb69cecb2 100644 --- a/addons/mail/models/res_partner.py +++ b/addons/mail/models/res_partner.py @@ -85,7 +85,7 @@ class Partner(models.Model): 'signature': signature, 'website_url': website_url, 'company': company, - 'model_name': model_name, + 'model_description': model_name, 'record': record, 'record_name': record_name, 'tracking_values': tracking, diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index e16cd71815b..905c7194083 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -198,6 +198,7 @@ class MailComposer(models.TransientModel): """ Process the wizard content and proceed with sending the related email(s), rendering any template patterns on the fly if needed. """ notif_layout = self._context.get('custom_layout') + ctx_notif_values = self._context.get('notif_values', {}) for wizard in self: # Duplicate attachments linked to the email.template. # Indeed, basic mail.compose.message wizard duplicates attachments in mass @@ -246,14 +247,15 @@ class MailComposer(models.TransientModel): if wizard.composition_mode == 'mass_mail': batch_mails |= Mail.create(mail_values) else: + notif_values = dict( + add_sign=not bool(wizard.template_id), + mail_auto_delete=wizard.template_id.auto_delete if wizard.template_id else False, + **ctx_notif_values) post_params = dict( message_type=wizard.message_type, subtype_id=subtype_id, notif_layout=notif_layout, - notif_values={ - 'add_sign': not bool(wizard.template_id), - 'mail_auto_delete': wizard.template_id.auto_delete if wizard.template_id else False, - }, + notif_values=notif_values, **mail_values) if ActiveModel._name == 'mail.thread' and wizard.model: post_params['model'] = wizard.model