[FIX] mass_mailing: Remove crappy onchange

There was a misunderstanding in the model implementation for campaigns.
The inheritS was handled in a strange way while redefining the name field,
and creating the utm campaign_id field in an onchange.

A stable commit has been given in saas-6, while this one will remove the onchange in saas-7
What's done:
- Remove the required name field
- Set campaign_id as name with the _rec_name property
- Remove the onchange on the model and the view
- Everything will be handled thanks to the inheritS mechanism
This commit is contained in:
Yannick Tivisse
2015-11-25 14:37:35 +01:00
parent 23a4adc199
commit 4371bfcbbd
3 changed files with 5 additions and 17 deletions
+1 -13
View File
@@ -169,7 +169,7 @@ class MassMailingCampaign(osv.Model):
"""Model of mass mailing campaigns. """
_name = "mail.mass_mailing.campaign"
_description = 'Mass Mailing Campaign'
_rec_name = "campaign_id"
_inherit = ['utm.mixin']
_inherits = {'utm.campaign': 'campaign_id'}
@@ -229,7 +229,6 @@ class MassMailingCampaign(osv.Model):
return result
_columns = {
'name': fields.char('Name', required=True),
'stage_id': fields.many2one('mail.mass_mailing.stage', 'Stage', required=True),
'user_id': fields.many2one(
'res.users', 'Responsible',
@@ -341,17 +340,6 @@ class MassMailingCampaign(osv.Model):
res[cid] = set(stat.res_id for stat in Statistics.browse(cr, uid, stat_ids, context=context))
return res
def on_change_campaign_name(self, cr, uid, ids, name, context=None):
if name:
mass_mailing_campaign = self.browse(cr, uid, ids, context=context)
if mass_mailing_campaign.campaign_id:
utm_campaign_id = mass_mailing_campaign.campaign_id.id
self.pool['utm.campaign'].write(cr, uid, [utm_campaign_id], {'name': name}, context=context)
else:
utm_campaign_id = self.pool['utm.campaign'].create(cr, uid, {'name': name}, context=context)
return {'value': {'campaign_id': utm_campaign_id}}
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True):
""" Override read_group to always display all states. """
if groupby and groupby[0] == "stage_id":
@@ -36,7 +36,7 @@ class MassMailingReport(osv.Model):
min(ms.id) as id,
ms.scheduled as scheduled_date,
mm.name as name,
mc.name as campaign,
utm.name as campaign,
count(ms.bounced) as bounced,
count(ms.sent) as sent,
(count(ms.sent) - count(ms.bounced)) as delivered,
@@ -48,5 +48,6 @@ class MassMailingReport(osv.Model):
mail_mail_statistics as ms
left join mail_mass_mailing as mm ON (ms.mass_mailing_id=mm.id)
left join mail_mass_mailing_campaign as mc ON (ms.mass_mailing_campaign_id=mc.id)
GROUP BY ms.scheduled, mm.name, mc.name, mm.state, mm.email_from
left join utm_campaign as utm ON (mc.campaign_id = utm.id)
GROUP BY ms.scheduled, mm.name, utm.name, mm.state, mm.email_from
)""")
+1 -2
View File
@@ -784,14 +784,13 @@
</button>
</div>
<group>
<field name="name" string="Campaign Name" on_change="on_change_campaign_name(name)"/>
<field name="name" string="Campaign Name"/>
<field name="user_id"/>
<field name="tag_ids" widget="many2many_tags"/>
</group>
<notebook>
<page string="Tracking">
<group>
<field name="campaign_id" attrs="{'invisible': True}"/>
<field name="medium_id" />
<field name="source_id" />
</group>