summaryrefslogtreecommitdiff
path: root/addons/mass_mailing/controllers/main.py
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2014-03-21 18:21:39 +0100
committerThibault Delavallée <tde@openerp.com>2014-03-21 18:21:39 +0100
commitb9cbb48ca3739e22f99a46e646f331ba03d9cd5b (patch)
treee716a1bce10ec14523c368e1d99f8e1a363f3b4e /addons/mass_mailing/controllers/main.py
parent1ce1468cea3c0021abd948e9487a06e68da80b40 (diff)
[IMP] mass_mailing: improved send_mail method (WIP). Also added
first fradt of adding an unsubscribe link in the sent emails. Added a controller managing this unsubscription. It is based on model, res_id and mailing_id, allowing to find the customer / lead / contact; but the email is added in the link to avoid allowing people unsubscribing random people using res_id generation. bzr revid: tde@openerp.com-20140321172139-sak10zs2g31xj0t4
Diffstat (limited to 'addons/mass_mailing/controllers/main.py')
-rw-r--r--addons/mass_mailing/controllers/main.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/addons/mass_mailing/controllers/main.py b/addons/mass_mailing/controllers/main.py
index 046084621c7..536fa3215c6 100644
--- a/addons/mass_mailing/controllers/main.py
+++ b/addons/mass_mailing/controllers/main.py
@@ -2,10 +2,36 @@
from openerp import http, SUPERUSER_ID
from openerp.http import request
+
class MassMailController(http.Controller):
+
@http.route('/mail/track/<int:mail_id>/blank.gif', type='http', auth='none')
def track_mail_open(self, mail_id):
+ print 'tracking', mail_id
""" Email tracking. """
mail_mail_stats = request.registry.get('mail.mail.statistics')
mail_mail_stats.set_opened(request.cr, SUPERUSER_ID, mail_mail_ids=[mail_id])
return "data:image/gif;base64,R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
+
+ @http.route(['/mail/mailing/<int:mailing_id>/unsubscribe'], type='http', auth='none')
+ def mailing(self, mailing_id, email=None, model=None, res_id=None, **post):
+ cr, uid, context = request.cr, request.uid, request.context
+ print 'unsubscribing from', mailing_id, email, model, res_id
+ MassMailing = request.registry['mail.mass_mailing']
+ # check model is valid
+ # ...
+ mailing_ids = MassMailing.exists(cr, SUPERUSER_ID, [mailing_id], context=context)
+ if not mailing_ids:
+ print 'wrroooooong'
+ return ''
+ if model == 'res.partner':
+ partner_ids = request.registry[model].search(cr, SUPERUSER_ID, [('id', '=', res_id), ('email', 'ilike', email)], context=context)
+ print 'Setting partner_ids', partner_ids, 'as opt out'
+ # request.registry[model].write(cr, SUPERUSER_ID, partner_ids, {'opt_out': True}, context=context)
+ else:
+ mailing = MassMailing.browse(cr, SUPERUSER_ID, mailing_ids[0], context=context)
+ list_ids = [l.id for l in mailing.contact_list_ids]
+ res_ids = request.registry[model].search(cr, SUPERUSER_ID, [('list_id', 'in', list_ids), ('id', '=', res_id), ('email', 'ilike', email)], context=context)
+ print 'Setting contacts', res_ids, 'as opt out'
+ # request.registry[model].write(cr, SUPERUSER_ID, res_ids, {'opt_out': True}, context=context)
+ return ''