From 73a7dc58d1783e79c109905e1e5209b33c2853fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 17 Mar 2014 17:56:49 +0100 Subject: [IMP] mass_mailing: improved campaign management in mass mailing wizard - campaign appear only when having the group activated - now choosing the mailing name, that create the mailing list + campaign - currently limited to the valid models bzr revid: tde@openerp.com-20140317165649-321f0wxatvj4pz5w --- addons/mass_mailing/wizard/mail_compose_message.py | 37 ++++++++++++---------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'addons/mass_mailing/wizard/mail_compose_message.py') diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index 4b3f0d6b9bd..d2d9ee1156d 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -31,10 +31,7 @@ class MailComposeMessage(osv.TransientModel): 'mass_mailing_campaign_id': fields.many2one( 'mail.mass_mailing.campaign', 'Mass mailing campaign', ), - 'mass_mailing_id': fields.many2one( - 'mail.mass_mailing', 'Mass mailing', - domain="[('mass_mailing_campaign_id', '=', mass_mailing_campaign_id)]", - ), + 'mass_mailing_name': fields.char('Mass Mailing'), } def get_mail_values(self, cr, uid, wizard, res_ids, context=None): @@ -42,19 +39,25 @@ class MailComposeMessage(osv.TransientModel): mail.mail.statistics values in the o2m of mail_mail, when doing pure email mass mailing. """ res = super(MailComposeMessage, self).get_mail_values(cr, uid, wizard, res_ids, context=context) - if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_campaign_id: # TODO: which kind of mass mailing ? - if wizard.mass_mailing_id: - mass_mailing_id = wizard.mass_mailing_id.id - else: - 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) + # use only for allowed models in mass mailing + if wizard.model not in [t[0] for t in self.pool['mail.mass_mailing']._get_mailing_type()]: + return res + if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_name: + list_id = self.pool['mail.mass_mailing.list'].create( + cr, uid, { + 'name': wizard.mass_mailing_name, + 'model': wizard.model, + 'domain': wizard.active_domain, + }, context=context) + mass_mailing_id = self.pool['mail.mass_mailing'].create( + cr, uid, { + 'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False, + 'name': wizard.mass_mailing_name, + 'template_id': wizard.template_id and wizard.template_id.id or False, + 'state': 'done', + 'mailing_type': wizard.model, + 'contact_list_ids': [(4, list_id)], + }, context=context) for res_id in res_ids: res[res_id]['statistics_ids'] = [(0, 0, { 'model': wizard.model, -- cgit v1.2.3 From feadcf402c1a3b995fe14727d62389c99a051846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 18 Mar 2014 14:20:17 +0100 Subject: [FIX] mass_mailing: fixed wrong method called in composer bzr revid: tde@openerp.com-20140318132017-lx3c4yd9rbelc1an --- addons/mass_mailing/wizard/mail_compose_message.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'addons/mass_mailing/wizard/mail_compose_message.py') diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index d2d9ee1156d..792f1c346e3 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -40,9 +40,8 @@ class MailComposeMessage(osv.TransientModel): email mass mailing. """ res = super(MailComposeMessage, self).get_mail_values(cr, uid, wizard, res_ids, context=context) # use only for allowed models in mass mailing - if wizard.model not in [t[0] for t in self.pool['mail.mass_mailing']._get_mailing_type()]: - return res - if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_name: + if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_name and \ + wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model()]: list_id = self.pool['mail.mass_mailing.list'].create( cr, uid, { 'name': wizard.mass_mailing_name, -- cgit v1.2.3 From 271e805cb8d2b3b3621e9e5184050ca7629b511d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 7 Apr 2014 19:03:46 +0200 Subject: [IMP] mass_mailing: new refactoring of the way the body is managed - now body_html is a right field on mass_mailing, editable using the website - email_designer controller / template now works on everything that has a body receiving its model and res_id as post parameters; it does not work only on email tempaltes anymore - cleaning of the mass mailing form view: reply_to managment option (either replied go into the document, either there is a specified reply_to; it is implemented using boolean fields instead of a selection because all options are not available for all models ... models like contact or partner do not have a chatter or shoudl be be used for a chatter-like use) - send to all now instantiates a mail.compose.message; the mass mailign processing is delegated to the wizard itself. bzr revid: tde@openerp.com-20140407170346-hpklabi513xskd07 --- addons/mass_mailing/wizard/mail_compose_message.py | 62 +++++++++++++++------- 1 file changed, 43 insertions(+), 19 deletions(-) (limited to 'addons/mass_mailing/wizard/mail_compose_message.py') diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index 792f1c346e3..97620632a73 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -19,6 +19,7 @@ # ############################################################################## +from openerp import tools from openerp.osv import osv, fields @@ -29,9 +30,15 @@ class MailComposeMessage(osv.TransientModel): _columns = { 'mass_mailing_campaign_id': fields.many2one( - 'mail.mass_mailing.campaign', 'Mass mailing campaign', + 'mail.mass_mailing.campaign', 'Mass Mailing Campaign', + ), + 'mass_mailing_id': fields.many2one( + 'mail.mass_mailing', 'Mass Mailing' ), 'mass_mailing_name': fields.char('Mass Mailing'), + 'mailing_list_ids': fields.many2many( + 'mail.mass_mailing.list', string='Mailing List' + ), } def get_mail_values(self, cr, uid, wizard, res_ids, context=None): @@ -40,27 +47,44 @@ class MailComposeMessage(osv.TransientModel): email mass mailing. """ res = super(MailComposeMessage, self).get_mail_values(cr, uid, wizard, res_ids, context=context) # use only for allowed models in mass mailing - if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_name and \ - wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model()]: - list_id = self.pool['mail.mass_mailing.list'].create( - cr, uid, { - 'name': wizard.mass_mailing_name, - 'model': wizard.model, - 'domain': wizard.active_domain, - }, context=context) - mass_mailing_id = self.pool['mail.mass_mailing'].create( - cr, uid, { - 'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False, - 'name': wizard.mass_mailing_name, - 'template_id': wizard.template_id and wizard.template_id.id or False, - 'state': 'done', - 'mailing_type': wizard.model, - 'contact_list_ids': [(4, list_id)], - }, context=context) + if wizard.composition_mode == 'mass_mail' and \ + (wizard.mass_mailing_name or wizard.mass_mailing_id) and \ + wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model(cr, uid, context=context)]: + if wizard.mailing_list_ids: + list_ids = [l.id for l in wizard.mailing_list_ids] + if not list_ids: + list_ids = [self.pool['mail.mass_mailing.list'].create( + cr, uid, { + 'name': wizard.mass_mailing_name, + 'model': wizard.model, + 'domain': wizard.active_domain, + }, context=context)] + mass_mailing = wizard.mass_mailing_id + if not mass_mailing: + mass_mailing_id = self.pool['mail.mass_mailing'].create( + cr, uid, { + 'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False, + 'name': wizard.mass_mailing_name, + 'template_id': wizard.template_id and wizard.template_id.id or False, + 'state': 'done', + 'mailing_type': wizard.model, + 'contact_list_ids': [(4, list_id) for list_id in list_ids], + }, context=context) + mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context) + recipient_values = self.pool['mail.mass_mailing'].get_recipients_data(cr, uid, mass_mailing, res_ids, context=context) for res_id in res_ids: + mail_values = res[res_id] + recipient = recipient_values[res_id] + unsubscribe_url = self.pool['mail.mass_mailing'].get_unsubscribe_url(cr, uid, mass_mailing.id, res_id, recipient['email'], context=context) + if unsubscribe_url: + mail_values['body_html'] = tools.append_content_to_html(mail_values['body_html'], unsubscribe_url, plaintext=False, container_tag='p') + mail_values.update({ + 'email_to': '"%s" <%s>' % (recipient['name'], recipient['email']) + }) + recipient = recipient_values[res_id] res[res_id]['statistics_ids'] = [(0, 0, { 'model': wizard.model, 'res_id': res_id, - 'mass_mailing_id': mass_mailing_id, + 'mass_mailing_id': mass_mailing.id, })] return res -- cgit v1.2.3 From 48d7a6fa6ca13208ca6468eaee127092fec60c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 14 Apr 2014 16:40:11 +0200 Subject: [CLEAN] mass_mailing: rmeoved dead stuff bzr revid: tde@openerp.com-20140414144011-awu4g35etq9s4gje --- addons/mass_mailing/wizard/mail_compose_message.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'addons/mass_mailing/wizard/mail_compose_message.py') diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index b10cafdcc4e..20a2c217d8b 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -50,16 +50,6 @@ class MailComposeMessage(osv.TransientModel): if wizard.composition_mode == 'mass_mail' and \ (wizard.mass_mailing_name or wizard.mass_mailing_id) and \ wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model(cr, uid, context=context)]: - # list_ids = None - # if wizard.mailing_list_ids: - # list_ids = [l.id for l in wizard.mailing_list_ids] - # if not list_ids: - # list_ids = [self.pool['mail.mass_mailing.list'].create( - # cr, uid, { - # 'name': wizard.mass_mailing_name, - # 'model': wizard.model, - # 'domain': wizard.active_domain, - # }, context=context)] mass_mailing = wizard.mass_mailing_id if not mass_mailing: mass_mailing_id = self.pool['mail.mass_mailing'].create( @@ -69,7 +59,7 @@ class MailComposeMessage(osv.TransientModel): 'template_id': wizard.template_id and wizard.template_id.id or False, 'state': 'done', 'mailing_type': wizard.model, - # 'contact_list_ids': [(4, list_id) for list_id in list_ids], + 'mailing_domain': wizard.active_domain, }, context=context) mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context) recipient_values = self.pool['mail.mass_mailing'].get_recipients_data(cr, uid, mass_mailing, res_ids, context=context) -- cgit v1.2.3 From 3eaeae55a03da0244d5eef821dfa81cd0c911764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 15 Apr 2014 17:47:00 +0200 Subject: [IMP] mail, mass_mailing: better recipientsz computation for mass mailing, composer and template. This allows to have one method computing recipints and avoid repetiting myself. bzr revid: tde@openerp.com-20140415154700-zu2izvxfjq1k4h4a --- addons/mass_mailing/wizard/mail_compose_message.py | 31 +--------------------- 1 file changed, 1 insertion(+), 30 deletions(-) (limited to 'addons/mass_mailing/wizard/mail_compose_message.py') diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index 20a2c217d8b..4aebff2d04d 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -1,25 +1,5 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2013-today OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see -# -############################################################################## -from openerp import tools from openerp.osv import osv, fields @@ -62,17 +42,8 @@ class MailComposeMessage(osv.TransientModel): 'mailing_domain': wizard.active_domain, }, context=context) mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context) - recipient_values = self.pool['mail.mass_mailing'].get_recipients_data(cr, uid, mass_mailing, res_ids, context=context) for res_id in res_ids: - mail_values = res[res_id] - recipient = recipient_values[res_id] - unsubscribe_url = self.pool['mail.mass_mailing'].get_unsubscribe_url(cr, uid, mass_mailing.id, res_id, recipient['email'], context=context) - if unsubscribe_url: - mail_values['body_html'] = tools.append_content_to_html(mail_values['body_html'], unsubscribe_url, plaintext=False, container_tag='p') - mail_values.update({ - 'email_to': '"%s" <%s>' % (recipient['name'], recipient['email']) - }) - recipient = recipient_values[res_id] + res[res_id]['mailing_id'] = mass_mailing.id res[res_id]['statistics_ids'] = [(0, 0, { 'model': wizard.model, 'res_id': res_id, -- cgit v1.2.3