diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-03-21 18:21:39 +0100 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-03-21 18:21:39 +0100 |
| commit | b9cbb48ca3739e22f99a46e646f331ba03d9cd5b (patch) | |
| tree | e716a1bce10ec14523c368e1d99f8e1a363f3b4e /addons/mass_mailing/controllers/main.py | |
| parent | 1ce1468cea3c0021abd948e9487a06e68da80b40 (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.py | 26 |
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 '' |
