diff --git a/mail_usability/README.rst b/mail_usability/README.rst new file mode 100644 index 0000000..ba08395 --- /dev/null +++ b/mail_usability/README.rst @@ -0,0 +1,10 @@ +# Mail Usability + +Take back the control on your email + +## Feature + +- do not follow automatically a object when sending an email +- add the option 'All Messages Except Notifications' on partner and use it by default to avoid sending unwanted mail to partner +- better email preview, allow to select between the whole database object and not only the last 10 +- use a light template version for notification without link (link should be explicit) diff --git a/mail_usability/__manifest__.py b/mail_usability/__manifest__.py index c2975fc..0f4426a 100644 --- a/mail_usability/__manifest__.py +++ b/mail_usability/__manifest__.py @@ -25,6 +25,9 @@ Small usability improvements on mails: 'author': 'Akretion', 'website': 'http://www.akretion.com', 'depends': ['mail'], - 'data': ['mail_view.xml'], + 'data': [ + 'mail_view.xml', + 'mail_data.xml', + ], 'installable': True, } diff --git a/mail_usability/mail.py b/mail_usability/mail.py index 2d86749..db4e31f 100644 --- a/mail_usability/mail.py +++ b/mail_usability/mail.py @@ -42,6 +42,17 @@ class ResPartner(models.Model): send_after_commit=send_after_commit, user_signature=user_signature) + def _notify_by_email( + self, message, force_send=False, send_after_commit=True, + user_signature=True): + if not self._context.get('custom_layout'): + self = self.with_context( + custom_layout='mail_usability.mail_template_notification') + return super(ResPartner, self)._notify_by_email( + message, force_send=force_send, + send_after_commit=send_after_commit, + user_signature=user_signature) + class TemplatePreview(models.TransientModel): _inherit = "email_template.preview" @@ -79,3 +90,20 @@ class TemplatePreview(models.TransientModel): self._context['template_id']) template.send_mail( self.res_id, force_send=True, raise_exception=True) + + +class MailThread(models.AbstractModel): + _inherit = 'mail.thread' + + @api.multi + @api.returns('self', lambda value: value.id) + def message_post(self, body='', subject=None, message_type='notification', + subtype=None, parent_id=False, attachments=None, + content_subtype='html', **kwargs): + # Do not implicitly follow an object by just sending a message + return super(MailThread, + self.with_context(mail_create_nosubscribe=True) + ).message_post( + body=body, subject=subject, message_type=message_type, + subtype=subtype, parent_id=parent_id, attachments=attachments, + content_subtype=content_subtype, **kwargs) diff --git a/mail_usability/mail_data.xml b/mail_usability/mail_data.xml new file mode 100644 index 0000000..f5499f4 --- /dev/null +++ b/mail_usability/mail_data.xml @@ -0,0 +1,15 @@ + + + + + + + Notification Email + ${object.subject} + + + ${object.body | safe} + + + +