[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'
_columns = {
'use_mass_mailing_campaign': fields.boolean(
'Use mass mailing campaigns',
),
'mass_mailing_campaign_id': fields.many2one(
'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):
""" Override method that generated the mail content by adding the mass
mailing campaign, when doing pure email mass mailing. """
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 ?
for res_id in res_ids:
res[res_id]['mass_mailing_id'] = wizard.mass_mailing_id.id
if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_campaign_id: # TODO: which kind of mass mailing ?
current_date = fields.datetime.now()
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

View File

@ -9,24 +9,8 @@
<field name="inherit_id" ref="mail.email_compose_message_wizard_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='notify']" position="after">
<field name="use_mass_mailing_campaign"
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>
<field name="mass_mailing_campaign_id"
attrs="{'invisible': [('composition_mode', '!=', 'mass_mail')]}"/>
</xpath>
</field>
</record>