[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:
parent
1636369747
commit
900705ca5b
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import create_list
|
||||
import create_template
|
||||
import mail_compose_message
|
||||
|
||||
|
|
|
@ -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,
|
||||
}
|
|
@ -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>
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue