[IMP] mass_mailing: added a new menu entry to create a new mailing list

that calls a new wizard, allowing to select contacts/customers/leads and create a new
mailing list.
Also updated default values in action 'create mailing list' for contact, customer and leads.
Also removed minimal form view on list, using only one view, with technical fields put
in group_no_one.

bzr revid: tde@openerp.com-20140327154606-7zrzi1ri1hfaxtay
This commit is contained in:
Thibault Delavallée 2014-03-27 16:46:06 +01:00
parent 1636369747
commit 900705ca5b
9 changed files with 109 additions and 69 deletions

View File

@ -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',

View File

@ -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',

View File

@ -68,11 +68,11 @@
<field name="context">{'search_default_not_opt_out': 1}</field>
</record>
<menuitem name="Contacts" id="menu_email_mass_mailing_contacts"
<menuitem name="Contacts" id="menu_email_mass_mailing_contacts" groups="base.group_no_one"
parent="mass_mailing_list" sequence="50"
action="action_view_mass_mailing_contacts"/>
<!-- Create a Mailing List from Contacts-->
<!-- Create a Mailing List from Contacts -->
<act_window name="Create Mailing List"
res_model="mail.mass_mailing.list"
src_model="mail.mass_mailing.contact"
@ -81,7 +81,10 @@
target="current"
key2="client_action_multi"
id="action_contact_to_mailing_list"
context="{'default_mass_mailing_id': context.get('default_mass_mailing_id')}"/>
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)}"/>
<!-- MASS MAILING LIST !-->
<record model="ir.ui.view" id="view_mail_mass_mailing_list_search">
@ -108,10 +111,9 @@
</field>
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_list_form_minimal">
<field name="name">mail.mass_mailing.list.form.minimal</field>
<record model="ir.ui.view" id="view_mail_mass_mailing_list_form">
<field name="name">mail.mass_mailing.list.form</field>
<field name="model">mail.mass_mailing.list</field>
<field name="priority">20</field>
<field name="arch" type="xml">
<form string="Contact List" version="7.0">
<header>
@ -125,48 +127,15 @@
<label for="contact_nbr"/>
<div>
<field name="contact_nbr" nolabel="1" class="oe_inline"/>
<button name="action_see_records" type="object" class="oe_link" string="contacts"/>
<field name="model" class="oe_inline"
on_change="on_change_model(model, context)" nolabel="1"/>
<button string="See Recipients" class="oe_inline oe_link" style="margin-left: 8px;"
name="action_see_records" type="object"/>
</div>
<field name="model" on_change="on_change_model(model, context)" invisible="1"/>
<field name="contact_ids" invisible="1"/>
<field name="filter_id" invisible="1"/>
<field name="domain" on_change="on_change_domain(domain, model, context)" invisible="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_list_form">
<field name="name">mail.mass_mailing.list.form</field>
<field name="model">mail.mass_mailing.list</field>
<field name="arch" type="xml">
<form string="Contact List" version="7.0">
<header>
<button name="action_add_to_mailing" type="object"
class="oe_highlight" string="Add to Mailing"
invisible="not context.get('default_mass_mailing_id')"/>
</header>
<sheet>
<group>
<field name="name"/>
<label for="contact_nbr"/>
<div>
<field name="contact_nbr" nolabel="1" class="oe_inline"/>
<button name="action_see_records" type="object" class="oe_link" string="contacts"/>
</div>
<field name="model" on_change="on_change_model(model, context)"/>
<field name="contact_ids"
attrs="{'invisible': [('model', '!=', 'mail.mass_mailing.contact')]}">
<tree editable='bottom'>
<field name="name"/>
<field name="email"/>
</tree>
</field>
<field name="filter_id"
on_change="on_change_filter_id(filter_id, context)"
attrs="{'invisible': [('model', '=', 'mail.mass_mailing.contact')]}"/>
<field name="domain" on_change="on_change_domain(domain, model, context)"/>
<field name="filter_id" groups="base.group_no_one"
on_change="on_change_filter_id(filter_id, context)"/>
<field name="domain" groups="base.group_no_one"
on_change="on_change_domain(domain, model, context)"/>
</group>
</sheet>
</form>
@ -279,17 +248,19 @@
</div>
<label for="contact_list_ids" string="Recipients"/>
<div>
<field name="contact_nbr" class="oe_inline" readonly="True"/>
<field name="mailing_model" class="oe_inline"
on_change='on_change_mailing_model(mailing_model, context)'/>
<span>selected</span>
<button name="action_see_recipients" type="object" string="See Recipients" class="oe_link" style='margin-left: 8px;'/>
<group>
<field name="mailing_model" string="Perform Mailing on" class="oe_inline" widget="radio"
on_change='on_change_mailing_model(mailing_model, context)'/>
<label for="contact_list_ids" string="Selected Lists"/>
<div>
<field name="contact_list_ids" widget="many2many_tags" nolabel="1" options="{'no_create': True}"/>
<button string='Create a New List' class="oe_inline oe_link" type='object' name='action_new_list'/>
</div>
<label for="contact_nbr" string="Contacts"/>
<div>
<field name="contact_nbr" nolabel="1" class="oe_inline" readonly="True"/> contacts selected
<button name="action_see_recipients" type="object" string="See Recipients" class="oe_link" style='margin-left: 8px;'/>
</div>
</group>
</div>
</group>
@ -603,5 +574,11 @@
parent="base.menu_email" sequence="50"
action="action_view_mail_mail_statistics"/>
<!-- MISC -->
<!-- Mailing List Create Wizard -->
<menuitem name="Create a new List" id="menu_mail_mass_mailing_create"
parent="mass_mailing_list" sequence="10"
action="action_mail_mass_mailing_create"/>
</data>
</openerp>

View File

@ -2,7 +2,7 @@
<openerp>
<data>
<!-- Create a Mailing List from Partners-->
<!-- Create a Mailing List from Partners -->
<act_window name="Create Mailing List"
res_model="mail.mass_mailing.list"
src_model="res.partner"
@ -11,10 +11,10 @@
target="current"
key2="client_action_multi"
id="action_partner_to_mailing_list"
view_id="mass_mailing.view_mail_mass_mailing_list_form_minimal"
context="{
'default_mass_mailing_id': context.get('default_mass_mailing_id'),
'default_model': 'res.partner'}"/>
'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)}"/>
</data>
</openerp>

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
import create_list
import create_template
import mail_compose_message

View File

@ -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,
}

View File

@ -0,0 +1,33 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_mail_mass_mailing_list_create_form">
<field name="name">mail.mass_mailing.list.create.form</field>
<field name="model">mail.mass_mailing.list.create</field>
<field name="arch" type="xml">
<form string="Create a Mailing List" version="7.0">
<header>
<button string='Create a New List' class="oe_highlight"
type='object' name='action_new_list'/>
</header>
<sheet>
<group>
<field name="name"/>
<field name="model" widget="radio"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_mail_mass_mailing_create" model="ir.actions.act_window">
<field name="name">Create a Mailing List</field>
<field name="res_model">mail.mass_mailing.list.create</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -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)

View File

@ -2,7 +2,7 @@
<openerp>
<data>
<!-- Replace the default mass-mailing wizard in base with the composition wizard -->
<!-- Create a Mailing List from Leads -->
<act_window name="Create Mailing List"
res_model="mail.mass_mailing.list"
src_model="crm.lead"
@ -11,7 +11,10 @@
target="current"
key2="client_action_multi"
id="action_lead_to_mailing_list"
context="{'default_mass_mailing_id': context.get('default_mass_mailing_id')}"/>
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)}"/>
</data>
</openerp>