diff --git a/addons/mass_mailing/__openerp__.py b/addons/mass_mailing/__openerp__.py
index b637f2b17e0..161af2187a4 100644
--- a/addons/mass_mailing/__openerp__.py
+++ b/addons/mass_mailing/__openerp__.py
@@ -43,6 +43,7 @@ professional emails and reuse templates in a few clicks.
'data/mass_mailing_data.xml',
'wizard/mail_compose_message_view.xml',
'wizard/create_template_view.xml',
+ 'wizard/create_list_view.xml',
'views/mass_mailing.xml',
'views/res_config.xml',
'views/res_partner.xml',
diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py
index 89d190f51cd..5281e962426 100644
--- a/addons/mass_mailing/models/mass_mailing.py
+++ b/addons/mass_mailing/models/mass_mailing.py
@@ -81,7 +81,8 @@ class MassMailingList(osv.Model):
"""Override default_get to handle active_domain coming from the list view. """
res = super(MassMailingList, self).default_get(cr, uid, fields, context=context)
if 'domain' in fields:
- res['model'] = context.get('active_model', 'res.partner')
+ if not 'model' in res and context.get('active_model'):
+ res['model'] = context['active_model']
if 'active_domain' in context:
res['domain'] = '%s' % context['active_domain']
elif 'active_ids' in context:
@@ -572,12 +573,6 @@ class MassMailing(osv.Model):
values['body_html'] = False
return {'value': values}
- def _get_model_to_list_action_id(self, cr, uid, model, context=None):
- if model == 'res.partner':
- return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_partner_to_mailing_list')
- else:
- return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_contact_to_mailing_list')
-
def action_duplicate(self, cr, uid, ids, context=None):
copy_id = None
for mailing in self.browse(cr, uid, ids, context=context):
@@ -598,10 +593,16 @@ class MassMailing(osv.Model):
}
return False
+ def _get_model_to_list_action_id(self, cr, uid, model, context=None):
+ if model == 'res.partner':
+ return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_partner_to_mailing_list')
+ else:
+ return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_contact_to_mailing_list')
+
def action_new_list(self, cr, uid, ids, context=None):
wizard = self.browse(cr, uid, ids[0], context=context)
- action_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_partner_to_mailing_list')
- ctx = dict(context, view_manager_highlight=[action_id], default_mass_mailing_id=ids[0])
+ action_id = self._get_model_to_list_action_id(cr, uid, wizard.mailing_model, context=context)
+ ctx = dict(context, view_manager_highlight=[action_id], default_mass_mailing_id=ids[0], default_model=wizard.mailing_model)
return {
'name': _('Choose Recipients'),
'type': 'ir.actions.act_window',
diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml
index 93fab015468..4f20c455ad7 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}
-
-
+
+ context="{
+'default_mass_mailing_id': context.get('default_mass_mailing_id'),
+'default_model': context.get('default_model', 'mail.mass_mailing.contact'),
+'default_name': context.get('default_name', False)}"/>
@@ -108,10 +111,9 @@
-
- mail.mass_mailing.list.form.minimal
+
+ mail.mass_mailing.list.form
mail.mass_mailing.list
- 20
-
-
-
-
- mail.mass_mailing.list.form
- mail.mass_mailing.list
-
-
@@ -279,17 +248,19 @@
-
-
-
selected
-
+
+
+
+ contacts selected
+
+
@@ -603,5 +574,11 @@
parent="base.menu_email" sequence="50"
action="action_view_mail_mail_statistics"/>
+
+
+
+
diff --git a/addons/mass_mailing/views/res_partner.xml b/addons/mass_mailing/views/res_partner.xml
index 79e82d87aae..9208ba59e4a 100644
--- a/addons/mass_mailing/views/res_partner.xml
+++ b/addons/mass_mailing/views/res_partner.xml
@@ -2,7 +2,7 @@
-
+
+'default_mass_mailing_id': context.get('default_mass_mailing_id'),
+'default_model': context.get('default_model', 'res.partner'),
+'default_name': context.get('default_name', False)}"/>
diff --git a/addons/mass_mailing/wizard/__init__.py b/addons/mass_mailing/wizard/__init__.py
index 7a195f4f66f..884c1f675f9 100644
--- a/addons/mass_mailing/wizard/__init__.py
+++ b/addons/mass_mailing/wizard/__init__.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
+import create_list
import create_template
import mail_compose_message
-
diff --git a/addons/mass_mailing/wizard/create_list.py b/addons/mass_mailing/wizard/create_list.py
new file mode 100644
index 00000000000..48ead89b25e
--- /dev/null
+++ b/addons/mass_mailing/wizard/create_list.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
+
+
+class MailingListWizard(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 = 'mail.mass_mailing.list.create'
+ _inherit = 'mail.mass_mailing.list'
+
+ def action_new_list(self, cr, uid, ids, context=None):
+ wizard = self.browse(cr, uid, ids[0], context=context)
+ action_id = self.pool['mail.mass_mailing']._get_model_to_list_action_id(cr, uid, wizard.model, context=context)
+ ctx = dict(context, view_manager_highlight=[action_id], default_name=wizard.name, default_model=wizard.model)
+ return {
+ 'name': _('Choose Recipients'),
+ 'type': 'ir.actions.act_window',
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': wizard.model,
+ 'context': ctx,
+ }
diff --git a/addons/mass_mailing/wizard/create_list_view.xml b/addons/mass_mailing/wizard/create_list_view.xml
new file mode 100644
index 00000000000..214fbfa625b
--- /dev/null
+++ b/addons/mass_mailing/wizard/create_list_view.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+ mail.mass_mailing.list.create.form
+ mail.mass_mailing.list.create
+
+
+
+
+
+
+ Create a Mailing List
+ mail.mass_mailing.list.create
+ form
+ form
+ new
+
+
+
+
diff --git a/addons/mass_mailing_crm/models/mass_mailing.py b/addons/mass_mailing_crm/models/mass_mailing.py
index 4ab13f4f260..c39f275892d 100644
--- a/addons/mass_mailing_crm/models/mass_mailing.py
+++ b/addons/mass_mailing_crm/models/mass_mailing.py
@@ -15,7 +15,7 @@ class MassMailing(osv.Model):
def _get_model_to_list_action_id(self, cr, uid, model, context=None):
if model == 'crm.lead':
- return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing.action_lead_to_mailing_list')
+ return self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'mass_mailing_crm.action_lead_to_mailing_list')
else:
return super(MassMailing, self)._get_model_to_list_action_id(cr, uid, model, context=context)
diff --git a/addons/mass_mailing_crm/views/crm_lead.xml b/addons/mass_mailing_crm/views/crm_lead.xml
index 44ed4fa9cfd..bd5ec0c1864 100644
--- a/addons/mass_mailing_crm/views/crm_lead.xml
+++ b/addons/mass_mailing_crm/views/crm_lead.xml
@@ -2,7 +2,7 @@
-
+
+ context="{
+'default_mass_mailing_id': context.get('default_mass_mailing_id'),
+'default_model': context.get('default_model', 'res.partner'),
+'default_name': context.get('default_name', False)}"/>