[WIP] Mailing Lists and Contacts cleaned

bzr revid: fp@tinyerp.com-20140412203129-5l7w4qr8rf2d1nqo
This commit is contained in:
Fabien Pinckaers 2014-04-12 22:31:29 +02:00
parent 2feab20dbb
commit 3df4eb0f72
4 changed files with 36 additions and 110 deletions

View File

@ -69,29 +69,26 @@
<!-- Create mailing lists -->
<record id="mass_mail_list_1" model="mail.mass_mailing.list">
<field name="name">Imported Contacts</field>
<field name="model">mail.mass_mailing.contact</field>
</record>
<record id="mass_mail_list_2" model="mail.mass_mailing.list">
<field name="name">Customers</field>
<field name="model">res.partner</field>
<field name="domain">[('customer', '=', True)]</field>
</record>
<!-- Create Contacts -->
<record id="mass_mail_contact_1" model="mail.mass_mailing.contact">
<field name="name">Aristide Antario</field>
<field name="email">aa@example.com</field>
<field name="list_id" eval="ref('mass_mail_list_1')"/>
<field name="list_id" ref="mass_mailing.mass_mail_list_1"/>
</record>
<record id="mass_mail_contact_2" model="mail.mass_mailing.contact">
<field name="name">Beverly Bridge</field>
<field name="email">bb@example.com</field>
<field name="list_id" eval="ref('mass_mail_list_1')"/>
<field name="list_id" ref="mass_mailing.mass_mail_list_1"/>
</record>
<record id="mass_mail_contact_3" model="mail.mass_mailing.contact">
<field name="name">Carol Cartridge</field>
<field name="email">cc@example.com</field>
<field name="list_id" eval="ref('mass_mail_list_1')"/>
<field name="list_id" ref="mass_mailing.mass_mail_list_1"/>
<field name="opt_out" eval="True"/>
</record>
@ -103,13 +100,12 @@
<field name="name">Newsletter</field>
<field name="stage_id" ref="mass_mailing.campaign_stage_1"/>
<field name="user_id" eval="ref('base.user_root')"/>
<field name="category_id" eval="ref('mass_mailing.mass_mail_category_1')"/>
<field name="category_ids" eval="[(6,0,[ref('mass_mailing.mass_mail_category_1')])]"/>
</record>
<record id="mass_mail_1" model="mail.mass_mailing">
<field name="name">First Newsletter</field>
<field name="state">done</field>
<field name="template_id" eval="ref('mass_mail_template_1')"/>
<field name="date" eval="(DateTime.today() - relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="mass_mailing_campaign_id" eval="ref('mass_mail_campaign_1')"/>
<field name="contact_list_ids" eval="[(4, ref('mass_mail_list_2'))]"/>
@ -117,7 +113,6 @@
<record id="mass_mail_2" model="mail.mass_mailing">
<field name="name">Second Newsletter</field>
<field name="state">test</field>
<field name="template_id" eval="ref('mass_mail_template_1')"/>
<field name="date" eval="(DateTime.today() - relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="mass_mailing_campaign_id" eval="ref('mass_mail_campaign_1')"/>
</record>

View File

@ -54,9 +54,10 @@ class MassMailingContact(osv.Model):
_columns = {
'name': fields.char('Name'),
'email': fields.char('Email', required=True),
'create_date': fields.datetime('Create Date'),
'list_id': fields.many2one(
'mail.mass_mailing.list', string='Mailing List',
ondelete='cascade',
ondelete='cascade', required=True,
),
'opt_out': fields.boolean('Opt Out', help='The contact has chosen not to receive mails anymore from this list'),
}
@ -104,8 +105,8 @@ class MassMailingCampaign(osv.Model):
'res.users', 'Responsible',
required=True,
),
'category_ids': fields.many2many(
'mail.mass_mailing.category', 'Categories'),
'category_ids': fields.many2many('mail.mass_mailing.category', 'mail_mass_amiling_category_rel',
'category_id', 'campaign_id', string='Categories'),
'mass_mailing_ids': fields.one2many(
'mail.mass_mailing', 'mass_mailing_campaign_id',
'Mass Mailings',
@ -174,8 +175,8 @@ class MassMailing(osv.Model):
'reply_to': fields.char('Reply To'),
# Target Emails
'mailing_model': fields.selection(_get_mailing_model, string='Model', required=True),
'mailing_domain': fields.char('Domain', required=True),
'mailing_model': fields.selection(_get_mailing_model, string='Model'),
'mailing_domain': fields.char('Domain'),
'contact_list_ids': fields.many2many(
'mail.mass_mailing.list', 'mail_mass_mailing_list_rel',
string='Mailing Lists',
@ -215,7 +216,6 @@ class MassMailing(osv.Model):
def on_change_mailing_model(self, cr, uid, ids, mailing_model, context=None):
values = {
'contact_list_ids': [],
'template_id': False,
'contact_nbr': 0,
'auto_reply_to_available': not mailing_model in self._get_private_models(context),
'reply_in_thread': not mailing_model in self._get_private_models(context),
@ -247,21 +247,6 @@ class MassMailing(osv.Model):
)
return {'value': values}
def on_change_template_id(self, cr, uid, ids, template_id, context=None):
values = {}
if template_id:
template = self.pool['email.template'].browse(cr, uid, template_id, context=context)
if template.email_from:
values['email_from'] = template.email_from
if template.reply_to:
values['reply_to'] = template.reply_to
values['body_html'] = template.body_html
else:
values['email_from'] = self.pool['mail.message']._get_default_from(cr, uid, context=context)
values['reply_to'] = False
values['body_html'] = False
return {'value': values}
def on_change_contact_ab_pc(self, cr, uid, ids, contact_ab_pc, contact_nbr, context=None):
return {'value': {'contact_ab_nbr': contact_nbr * contact_ab_pc / 100.0}}

View File

@ -6,7 +6,7 @@
<menuitem name="Mass Mailing" id="mass_mailing_campaign"
parent="base.marketing_menu" sequence="1"/>
<!-- Marketing / Mailing Lists -->
<menuitem name="Contact Lists" id="mass_mailing_list"
<menuitem name="Mailing Lists" id="mass_mailing_list"
parent="base.marketing_menu" sequence="2"/>
<!-- Marketing / Configuration -->
<menuitem name="Configuration" id="marketing_configuration"
@ -22,9 +22,10 @@
<field name="email"/>
<field name="list_id"/>
<separator/>
<filter string="Exclude Opt Out" name="not_opt_out" domain="[('opt_out', '=', False)]"
help="Contact is not opt-out"/>
<filter string="Exclude Opt Out" name="not_opt_out" domain="[('opt_out', '=', False)]"/>
<group expand="0" string="Group By...">
<filter string="Creation Date" name="group_create_date"
context="{'group_by': 'create_date'}"/>
<filter string="Mailing Lists" name="group_list_id"
context="{'group_by': 'list_id'}"/>
</group>
@ -38,8 +39,8 @@
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mailing Lists Subscribers" editable="top">
<field name="name"/>
<field name="email"/>
<field name="name"/>
<field name="list_id"/>
<field name="opt_out"/>
</tree>
@ -100,15 +101,18 @@
<field name="arch" type="xml">
<form string="Contact List" version="7.0">
<sheet>
<!-- TODO: stat_get button and relate link -->
<div class="oe_button_box" nname="buttons">
<button name="%(mass_mailing.mass_mailing_list_open_contacts)d" type="action"
string="Recipients"/>
<div class="oe_right oe_button_box" name="buttons">
<button name="%(mass_mailing.mass_mailing_list_open_contacts)d"
type="action" icon="fa-user" class="oe_stat_button pull-right">
<field name="contact_nbr" string="Recipients" widget="statinfo"/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<field name="name"/>
<field for="contact_nbr"/>
</group>
</sheet>
</form>
</field>
@ -268,35 +272,16 @@
<span style="margin-left: 8px; margin-right: 8px">or</span>
<button string='Create a New List' class="oe_link" type='object' name='action_new_list'/><br />
<div groups="mass_mailing.group_mass_mailing_campaign" style="display: inline;">
<field name="ab_testing" invisible="1"/>
<label for="contact_ab_pc" string="AB Testing" style="display: inline-block; min-width: 90px;"/>
Email <field name="contact_ab_pc" class="oe_inline"
on_change="on_change_contact_ab_pc(contact_ab_pc, contact_nbr, context)"/>
<strong>%</strong> of recipients
(<field name="contact_ab_nbr" class="oe_inline"/> recipients)
<div attrs="{'invisible': [('ab_testing', '=', False)]}" style="display: inline;">
<span>(</span>
<field name="contact_ab_done" class="oe_inline"
attrs="{'invisible': [('ab_testing', '=', False)]}"/> already mailed
<span>)</span>
</div>
</div>
<field name="contact_ab_pc" groups="mass_mailing.group_mass_mailing_campaign"/>
</div>
<field name="date" readonly="True" groups="mass_mailing.group_mass_mailing_campaign"
attrs="{'invisible': [('state', '!=', 'done')]}"/>
<field name="mass_mailing_campaign_id" groups="mass_mailing.group_mass_mailing_campaign"/>
<label for="body_html" string="Email"/>
<div>
<label for="template_id" string="Template"/>
<field name="template_id" string="Select Template"
class="oe_inline" options="{'no_create': True, 'no_open': True}"
on_change="on_change_template_id(template_id, context)"/><br />
<button name="action_edit_html" type="object" string="Edit Mail Content"
class="oe_link" style="margin-left: 8px"/>
<field name="body_html"/>
</div>
<button name="action_edit_html" type="object" string="Edit Mail Content"
class="oe_link" style="margin-left: 8px"/>
<field name="body_html"/>
</group>
</sheet>
</form>
@ -397,28 +382,12 @@
<field name="model">mail.mass_mailing.stage</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mass Mailings">
<tree string="Mass Mailings" editable="top">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="sequence"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_stage_form">
<field name="name">mail.mass_mailing.stage.form</field>
<field name="model">mail.mass_mailing.stage</field>
<field name="arch" type="xml">
<form string="Mass Mailing" version="7.0">
<sheet>
<group>
<field name="name"/>
<field name="sequence"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_view_mass_mailing_stages" model="ir.actions.act_window">
<field name="name">Mass Mailing Stages</field>
<field name="res_model">mail.mass_mailing.stage</field>
@ -437,15 +406,13 @@
<field name="arch" type="xml">
<search string="Mass Mailing Campaigns">
<field name="name" string="Campaigns"/>
<field name="category_id"/>
<field name="category_ids"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<filter string="Stage" name="group_stage_id"
context="{'group_by': 'stage_id'}"/>
<filter string="Responsible" name="group_user_id"
context="{'group_by': 'user_id'}"/>
<filter string="Category" name="group_category_id"
context="{'group_by': 'category_id'}"/>
</group>
</search>
</field>
@ -460,7 +427,7 @@
<field name="name"/>
<field name="user_id"/>
<field name="stage_id"/>
<field name="category_id"/>
<field name="category_ids"/>
</tree>
</field>
</record>
@ -479,7 +446,7 @@
<group>
<field name="name"/>
<field name="user_id"/>
<field name="category_id"/>
<field name="category_ids"/>
</group>
<group>
<field name="total" invisible="1"/>
@ -550,7 +517,7 @@
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)"
t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar oe_kanban_header_right"/>
<h3 style="margin-bottom: 8px;"><field name="name"/></h3>
<span class="oe_tag"><field name="category_id"/></span>
<span class="oe_tag"><field name="category_ids"/></span>
<a name="%(action_view_mass_mailings_from_campaign)d" type="action"
class="oe_mailings">
<h4 style="margin-top: 8px;"><t t-raw="record.mass_mailing_ids.raw_value.length"/> Mailings</h4>
@ -640,7 +607,6 @@
<group>
<field name="mass_mailing_id"/>
<field name="mass_mailing_campaign_id"/>
<field name="template_id"/>
<field name="model"/>
<field name="res_id"/>
</group>
@ -661,11 +627,5 @@
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,19 +2,5 @@
<openerp>
<data>
<!-- Create a Mailing List from Partners -->
<act_window name="Create Mailing List"
res_model="mail.mass_mailing.list.confirm"
src_model="res.partner"
view_mode="form"
multi="True"
target="new"
key2="client_action_multi"
id="action_partner_to_mailing_list"
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>