From 3df4eb0f7271cebe95ce6904072420a6cb2d1d9d Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sat, 12 Apr 2014 22:31:29 +0200 Subject: [PATCH 01/14] [WIP] Mailing Lists and Contacts cleaned bzr revid: fp@tinyerp.com-20140412203129-5l7w4qr8rf2d1nqo --- .../mass_mailing/data/mass_mailing_demo.xml | 13 +-- addons/mass_mailing/models/mass_mailing.py | 27 ++---- addons/mass_mailing/views/mass_mailing.xml | 92 ++++++------------- addons/mass_mailing/views/res_partner.xml | 14 --- 4 files changed, 36 insertions(+), 110 deletions(-) diff --git a/addons/mass_mailing/data/mass_mailing_demo.xml b/addons/mass_mailing/data/mass_mailing_demo.xml index 4857c235a98..d6fc5167e45 100644 --- a/addons/mass_mailing/data/mass_mailing_demo.xml +++ b/addons/mass_mailing/data/mass_mailing_demo.xml @@ -69,29 +69,26 @@ Imported Contacts - mail.mass_mailing.contact Customers - res.partner - [('customer', '=', True)] Aristide Antario aa@example.com - + Beverly Bridge bb@example.com - + Carol Cartridge cc@example.com - + @@ -103,13 +100,12 @@ Newsletter - + First Newsletter done - @@ -117,7 +113,6 @@ Second Newsletter test - diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index 5dbbc584785..83bcf267748 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -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}} diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml index 7c0280f2c1f..b7d2017666e 100644 --- a/addons/mass_mailing/views/mass_mailing.xml +++ b/addons/mass_mailing/views/mass_mailing.xml @@ -6,7 +6,7 @@ - - + + @@ -38,8 +39,8 @@ 10 - + @@ -100,15 +101,18 @@
- -
- +
+
+
- - - -
@@ -268,35 +272,16 @@ or + + + +
+ +
- - - - - -
-
- - -
-
- - - -
-
- - -
-
-
-
- -
- -

-
-
-
Email From
-
-
- -
-
To (Email)
-
-
- -
-
To (Partners)
-
-
- -
-
Reply To
-
-
- -
-
Subject
-
-
- -
-
-
+
+ +
+ +
+
+ + Save and Continue + +

+ Design Your Email +

+
+
+ +
+ +
+
+
+ +
+
+
+
From 8d6e2b4a15bc6378ca8b7ae89e33c240665fa589 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 13 Apr 2014 21:57:30 +0200 Subject: [PATCH 07/14] [iMP] minor bugfixes bzr revid: fp@tinyerp.com-20140413195730-zpzpsmo53fqa4x96 --- addons/website_mail/controllers/email_designer.py | 1 + addons/website_mail/views/website_email_designer.xml | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/website_mail/controllers/email_designer.py b/addons/website_mail/controllers/email_designer.py index 88fb147f365..26b025a2abe 100644 --- a/addons/website_mail/controllers/email_designer.py +++ b/addons/website_mail/controllers/email_designer.py @@ -16,6 +16,7 @@ class WebsiteEmailDesigner(http.Controller): tids = tmpl_obj.search(cr, uid, [('model','=',template_model)], context=context) templates = tmpl_obj.browse(cr, uid, tids, context=context) + print templates values = { 'object': request.registry[model].browse(cr, uid, res_id, context=context), 'templates': templates, diff --git a/addons/website_mail/views/website_email_designer.xml b/addons/website_mail/views/website_email_designer.xml index c1fa5482869..9316d732e8c 100644 --- a/addons/website_mail/views/website_email_designer.xml +++ b/addons/website_mail/views/website_email_designer.xml @@ -8,10 +8,10 @@ -
-
+
+ t-attf-href="/web#return_label=Website&model=#{model}&id=#{res_id}&view_type=form"> Save and Continue

From b1ccd5636897e721f652e551c80ce7b13c87dc00 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 13 Apr 2014 22:17:48 +0200 Subject: [PATCH 08/14] [IMP] better usability bzr revid: fp@tinyerp.com-20140413201748-u8e26ef40dt7360i --- .../mass_mailing/models/mass_mailing_stats.py | 2 +- addons/mass_mailing/views/mass_mailing.xml | 18 +++++++++--------- addons/mass_mailing/wizard/test_mailing.py | 15 ++++++--------- addons/mass_mailing/wizard/test_mailing.xml | 7 +++++-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/addons/mass_mailing/models/mass_mailing_stats.py b/addons/mass_mailing/models/mass_mailing_stats.py index f002a6f0c7f..0dc31b5671a 100644 --- a/addons/mass_mailing/models/mass_mailing_stats.py +++ b/addons/mass_mailing/models/mass_mailing_stats.py @@ -40,7 +40,7 @@ class MassMailingList(osv.Model): def _get_contact_nbr(self, cr, uid, ids, name, arg, context=None): result = dict.fromkeys(ids, 0) mlc = self.pool.get('mail.mass_mailing.contact') - for m in mlc.read_group(cr, uid, [('list_id','in',ids)], ['list_id'], ['list_id'], context=context): + for m in mlc.read_group(cr, uid, [('list_id','in',ids),('opt_out','!=',1)], ['list_id'], ['list_id'], context=context): result[m['list_id'][0]] = m['list_id_count'] return result diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml index 7af3231b45e..3a4e47b405c 100644 --- a/addons/mass_mailing/views/mass_mailing.xml +++ b/addons/mass_mailing/views/mass_mailing.xml @@ -87,7 +87,7 @@ mail.mass_mailing.contact form tree - {'search_default_list_id': active_id} + {'search_default_list_id': active_id, 'search_default_not_opt_out': 1}

Click to create a recipient. @@ -180,15 +180,17 @@

- emails are in queue - and will be sent soon. + + emails are in queue and will be sent soon.

@@ -236,16 +238,14 @@ Recipients -

-
- -
+
-
+