[IMP] mail.compose.message: simplified mass mailing use in composer

Only remaining field is mass_mailing_campaign_id; if set, a new segment is automatically created
and its id is given to the created mail.mail.statistics using default value in context

bzr revid: tde@openerp.com-20130913132234-66vl19w54znky2rc
This commit is contained in:
Thibault Delavallée 2013-09-13 15:22:34 +02:00
parent 7b75c481d6
commit 71d2a97a50
2 changed files with 13 additions and 35 deletions

View File

@ -28,9 +28,6 @@ class MailComposeMessage(osv.TransientModel):
_inherit = 'mail.compose.message' _inherit = 'mail.compose.message'
_columns = { _columns = {
'use_mass_mailing_campaign': fields.boolean(
'Use mass mailing campaigns',
),
'mass_mailing_campaign_id': fields.many2one( 'mass_mailing_campaign_id': fields.many2one(
'mail.mass_mailing.campaign', 'Mass mailing campaign', 'mail.mass_mailing.campaign', 'Mass mailing campaign',
), ),
@ -40,22 +37,19 @@ class MailComposeMessage(osv.TransientModel):
), ),
} }
_defaults = {
'use_mass_mailing_campaign': False,
}
def onchange_mass_mail_campaign_id(self, cr, uid, ids, mass_mailing_campaign_id, mass_mailing_id, context=None):
if mass_mailing_id:
mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context)
if mass_mailing.mass_mailing_campaign_id.id == mass_mailing_campaign_id:
return {}
return {'value': {'mass_mailing_id': False}}
def render_message_batch(self, cr, uid, wizard, res_ids, context=None): def render_message_batch(self, cr, uid, wizard, res_ids, context=None):
""" Override method that generated the mail content by adding the mass """ Override method that generated the mail content by adding the mass
mailing campaign, when doing pure email mass mailing. """ mailing campaign, when doing pure email mass mailing. """
res = super(MailComposeMessage, self).render_message_batch(cr, uid, wizard, res_ids, context=context) res = super(MailComposeMessage, self).render_message_batch(cr, uid, wizard, res_ids, context=context)
if wizard.composition_mode == 'mass_mail' and wizard.use_mass_mailing_campaign and wizard.mass_mailing_id: # TODO: which kind of mass mailing ? if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_campaign_id: # TODO: which kind of mass mailing ?
for res_id in res_ids: current_date = fields.datetime.now()
res[res_id]['mass_mailing_id'] = wizard.mass_mailing_id.id mass_mailing_id = self.pool['mail.mass_mailing'].create(
cr, uid, {
'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id.id,
'name': '%s-%s' % (wizard.mass_mailing_campaign_id.name, current_date),
'date': current_date,
'domain': wizard.active_domain,
'template_id': wizard.template_id and wizard.template_id.id or False,
}, context=context)
context['default_mass_mailing_id'] = mass_mailing_id
return res return res

View File

@ -9,24 +9,8 @@
<field name="inherit_id" ref="mail.email_compose_message_wizard_form"/> <field name="inherit_id" ref="mail.email_compose_message_wizard_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='notify']" position="after"> <xpath expr="//field[@name='notify']" position="after">
<field name="use_mass_mailing_campaign" <field name="mass_mailing_campaign_id"
attrs="{'invisible': [('composition_mode', '!=', 'mass_mail')]}"/> attrs="{'invisible': [('composition_mode', '!=', 'mass_mail')]}"/>
<label for="mass_mailing_campaign_id" string=" "/>
<div>
<group>
<field name="mass_mailing_campaign_id"
on_change="onchange_mass_mail_campaign_id(mass_mailing_campaign_id, mass_mailing_id, context)"
attrs="{'invisible': ['|', ('composition_mode', '!=', 'mass_mail'), ('use_mass_mailing_campaign', '=', False)],
'required': [('composition_mode', '=', 'mass_mail'), ('use_mass_mailing_campaign', '=', True)]}"/>
<field name="mass_mailing_id"
attrs="{'invisible': ['|', ('composition_mode', '!=', 'mass_mail'), ('use_mass_mailing_campaign', '=', False)],
'required': [('composition_mode', '=', 'mass_mail'), ('use_mass_mailing_campaign', '=', True)]}"
context="{'default_mass_mailing_campaign_id': mass_mailing_campaign_id,
'default_template_id': template_id,
'default_domain': active_domain,
'form_view_ref': 'mass_mailing.view_mail_mass_mailing_form_readonly'}"/>
</group>
</div>
</xpath> </xpath>
</field> </field>
</record> </record>