From dae3551132a30f4c59ecbd2abced1041be10eeb4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 27 Mar 2014 14:08:27 +0100
Subject: [PATCH] [IMP] mass_mailing: usability improvements - from
mass_mailing, creating or editing a template now goes through a wizard to
avoid tweaking too much the email.template view. This allows an easier
management of templates and their link with mailings. - moved email.template
minimal form view from email_tmeplate to mass_mailing, because it is the sole
module to use it. Tweaked it a bit by the way. - removed dead code about
actions not used anymore in mass_mailing - empty list help on
mail.mass_mailing.list - various small usability fixes
bzr revid: tde@openerp.com-20140327130827-h9dy2m6mq10gzg1s
---
addons/email_template/email_template_view.xml | 34 ----------
addons/mass_mailing/__openerp__.py | 1 +
.../mass_mailing/data/mass_mailing_demo.xml | 3 +-
addons/mass_mailing/models/mass_mailing.py | 41 +-----------
addons/mass_mailing/views/email_template.xml | 52 ++++++++++-----
addons/mass_mailing/views/mass_mailing.xml | 44 +++++++------
addons/mass_mailing/wizard/__init__.py | 2 +
addons/mass_mailing/wizard/create_template.py | 63 +++++++++++++++++++
.../wizard/create_template_view.xml | 49 +++++++++++++++
9 files changed, 181 insertions(+), 108 deletions(-)
create mode 100644 addons/mass_mailing/wizard/create_template.py
create mode 100644 addons/mass_mailing/wizard/create_template_view.xml
diff --git a/addons/email_template/email_template_view.xml b/addons/email_template/email_template_view.xml
index 6eb2835ad8f..6dda3e97571 100644
--- a/addons/email_template/email_template_view.xml
+++ b/addons/email_template/email_template_view.xml
@@ -80,40 +80,6 @@
-
- email.template.form.minimal
- email.template
- 32
-
-
-
-
-
email.template.tree
email.template
diff --git a/addons/mass_mailing/__openerp__.py b/addons/mass_mailing/__openerp__.py
index a6cb8e39b8c..b637f2b17e0 100644
--- a/addons/mass_mailing/__openerp__.py
+++ b/addons/mass_mailing/__openerp__.py
@@ -42,6 +42,7 @@ professional emails and reuse templates in a few clicks.
'data/mail_data.xml',
'data/mass_mailing_data.xml',
'wizard/mail_compose_message_view.xml',
+ 'wizard/create_template_view.xml',
'views/mass_mailing.xml',
'views/res_config.xml',
'views/res_partner.xml',
diff --git a/addons/mass_mailing/data/mass_mailing_demo.xml b/addons/mass_mailing/data/mass_mailing_demo.xml
index a1dd0ab9dfc..d9f6cb1d1bc 100644
--- a/addons/mass_mailing/data/mass_mailing_demo.xml
+++ b/addons/mass_mailing/data/mass_mailing_demo.xml
@@ -1,7 +1,6 @@
-
-
+
Partner Newsletter 1
diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py
index cf4ccdaa55d..89d190f51cd 100644
--- a/addons/mass_mailing/models/mass_mailing.py
+++ b/addons/mass_mailing/models/mass_mailing.py
@@ -463,7 +463,7 @@ class MassMailing(osv.Model):
),
# mailing options
'email_from': fields.char('From'),
- 'email_to': fields.char('Test Emails'),
+ 'test_email_to': fields.char('Test Emails'),
'reply_to': fields.char('Reply To'),
'mailing_model': fields.selection(_mailing_model, string='Type', required=True),
'contact_list_ids': fields.many2many(
@@ -625,43 +625,6 @@ class MassMailing(osv.Model):
'context': context,
}
- def action_template_new(self, cr, uid, ids, context=None):
- mailing = self.browse(cr, uid, ids[0], context=context)
- view_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'email_template.email_template_form_minimal')
- ctx = dict(
- context,
- default_model=mailing.mailing_model,
- default_use_in_mass_mailing=True,
- default_use_default_to=True,
- default_name=mailing.name,
- )
- return {
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'email.template',
- 'view_id': view_id,
- 'context': ctx,
- }
-
- def action_template_copy(self, cr, uid, ids, context=None):
- mailing = self.browse(cr, uid, ids[0], context=context)
- if not mailing.template_id:
- return False
- new_tpl_id = self.pool['email.template'].copy(cr, uid, mailing.template_id.id, context=context)
- self.write(cr, uid, [mailing.id], {'template_id': new_tpl_id}, context=context)
- view_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'email_template.email_template_form_minimal')
- return {
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'email.template',
- 'res_id': new_tpl_id,
- 'view_id': view_id,
- 'target': 'new',
- 'context': context,
- }
-
#------------------------------------------------------
# Email Sending
#------------------------------------------------------
@@ -744,7 +707,7 @@ class MassMailing(osv.Model):
if not mailing.template_id:
raise Warning('Please specifiy a template to use.')
# res_ids = self._set_up_test_mailing(cr, uid, mailing.mailing_model, context=context)
- test_emails = tools.email_split(mailing.email_to)
+ test_emails = tools.email_split(mailing.test_email_to)
if not test_emails:
raise Warning('Please specifiy test email adresses.')
mail_ids = []
diff --git a/addons/mass_mailing/views/email_template.xml b/addons/mass_mailing/views/email_template.xml
index 35593478520..cb1a6b2d514 100644
--- a/addons/mass_mailing/views/email_template.xml
+++ b/addons/mass_mailing/views/email_template.xml
@@ -14,19 +14,39 @@
-
- email.template.form.minimal.mass.mailing
+
+ email.template.form.minimal
email.template
-
+ 32
-
-
-
-
-
Choosing this option makes the template available for use
-in the mailings. It will also appear in the 'Mail Templates' menu.
-
-
+
@@ -82,21 +102,23 @@ in the mailings. It will also appear in the 'Mail Templates' menu.
-
+
Templates
email.template
form
kanban,tree,form
+
{
- 'search_default_use_in_mass_mailing': 1,
- 'form_view_ref': 'email_template.email_template_form_minimal',
+ 'form_view_ref': 'mass_mailing.email_template_form_minimal',
+ 'default_use_default_to': True,
+ 'default_use_in_mass_mailing': True,
}
+ action="action_email_template_marketing"/>
\ No newline at end of file
diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml
index 0991210fe1a..93fab015468 100644
--- a/addons/mass_mailing/views/mass_mailing.xml
+++ b/addons/mass_mailing/views/mass_mailing.xml
@@ -68,11 +68,11 @@
{'search_default_not_opt_out': 1}
-
-
+
-
+
-
+
@@ -178,6 +178,12 @@
mail.mass_mailing.list
form
tree,form
+
+
+ Click here to create a new mailing list.
+
+ Mailing lists allows you to to manage customers and contacts easily and to send to mailings in a single click.
+
Here be some graphs
+
+
+
+ Comma-separated email addresses for testing purpose.
+
+
selected
-
+
diff --git a/addons/mass_mailing/wizard/__init__.py b/addons/mass_mailing/wizard/__init__.py
index b6410f3543f..7a195f4f66f 100644
--- a/addons/mass_mailing/wizard/__init__.py
+++ b/addons/mass_mailing/wizard/__init__.py
@@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
+import create_template
import mail_compose_message
+
diff --git a/addons/mass_mailing/wizard/create_template.py b/addons/mass_mailing/wizard/create_template.py
new file mode 100644
index 00000000000..420102c2c9b
--- /dev/null
+++ b/addons/mass_mailing/wizard/create_template.py
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import osv, fields
+
+
+class EmailTemplateWizard(osv.TransientModel):
+ """A wizard allowing to create an email.template from a mass mailing. This wizard
+ allows to simplify and direct the user in the creation of its template without
+ having to tune or hack the email.template model. """
+ _name = 'mailing.email.template.wizard'
+
+ def default_get(self, cr, uid, fields, context=None):
+ res = super(EmailTemplateWizard, self).default_get(cr, uid, fields, context=context)
+ if res.get('mass_mailing_id') and not 'name' in res:
+ mailing_ng = self.pool['mail.mass_mailing'].name_get(cr, uid, [res.get('mass_mailing_id')], context=context)
+ res['name'] = mailing_ng[0][1]
+ return res
+
+ def _get_model_list(self, cr, uid, context=None):
+ return self.pool['mail.mass_mailing']._get_mailing_model(cr, uid, context=context)
+
+ # indirections for inheritance
+ _model_list = lambda self, *args, **kwargs: self._get_model_list(*args, **kwargs)
+
+ _columns = {
+ 'name': fields.char('Name', required=True),
+ 'body': fields.html('Body'),
+ 'template_id': fields.many2one('email.template', 'Basis Template'),
+ 'mass_mailing_id': fields.many2one('mail.mass_mailing', 'Mass Mailing', required=True),
+ 'attachment_ids': fields.many2many(
+ 'ir.attachment', 'email_template_wizard_attachment_rel', 'email_template_id',
+ 'attachment_id', 'Attachments'),
+ }
+
+ def on_change_template_id(self, cr, uid, ids, template_id, context=None):
+ if template_id:
+ template = self.pool['email.template'].browse(cr, uid, template_id, context=context)
+ return {'value': {'body': template.body_html, 'attachment_ids': [(4, att.id) for att in template.attachment_ids]}}
+ return {}
+
+ def create_template(self, cr, uid, ids, context=None):
+ EmailTemplate = self.pool['email.template']
+ for wizard in self.browse(cr, uid, ids, context=context):
+ model_ids = self.pool['ir.model'].search(cr, uid, [('model', '=', wizard.mass_mailing_id.mailing_model)], context=context)
+ values = {
+ 'name': wizard.name,
+ 'model_id': model_ids[0],
+ 'body_html': wizard.body,
+ 'use_in_mass_mailing': True,
+ 'use_default_to': True,
+ 'attachment_ids': [(4, attach.id) for attach in wizard.attachment_ids],
+ }
+ tpl_id = EmailTemplate.create(cr, uid, values, context=context)
+ self.pool['mail.mass_mailing'].write(cr, uid, [wizard.mass_mailing_id.id], {'template_id': tpl_id}, context=context)
+ return {
+ 'type': 'ir.actions.act_window',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'mail.mass_mailing',
+ 'res_id': wizard.mass_mailing_id.id,
+ 'target': 'current',
+ 'context': context,
+ }
diff --git a/addons/mass_mailing/wizard/create_template_view.xml b/addons/mass_mailing/wizard/create_template_view.xml
new file mode 100644
index 00000000000..e240017e572
--- /dev/null
+++ b/addons/mass_mailing/wizard/create_template_view.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+ mailing.email.template.wizard.form
+ mailing.email.template.wizard
+
+
+
+
+
+
+ Mass Mailing Template
+ mailing.email.template.wizard
+ form
+ form
+ new
+
+
+
+