diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-06-10 10:42:28 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-07-10 17:00:15 +0200 |
| commit | fd5361c0f7116e951cf9e69e2d97a8ccb07ce1b6 (patch) | |
| tree | 96d765ac0ddc3738e8b6ca40d7a27ddf84e334cc /addons/website_mass_mailing/controllers/main.py | |
| parent | 2868a86401cf34ab28e036c3b359673c8efe324b (diff) | |
[IMP] mass_mailing: remove depends to website. Create a website_mass_mailing bridge to add subscribe snippet into website builder. Split website_links to have link_tracker to create short and trackable URLs, and website_links to have a website layout for link_tracker and add button to share page.
Diffstat (limited to 'addons/website_mass_mailing/controllers/main.py')
| -rw-r--r-- | addons/website_mass_mailing/controllers/main.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/addons/website_mass_mailing/controllers/main.py b/addons/website_mass_mailing/controllers/main.py new file mode 100644 index 00000000000..49ca5d5f1a1 --- /dev/null +++ b/addons/website_mass_mailing/controllers/main.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +from openerp import http, SUPERUSER_ID +from openerp.http import request + + +class MassMailController(http.Controller): + + @http.route(['/mail/mailing/<int:mailing_id>/unsubscribe'], type='http', website=True, auth='none') + def mailing(self, mailing_id, email=None, res_id=None, **post): + mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id) + if mailing.exists(): + if mailing.mailing_model == 'mail.mass_mailing.contact': + contacts = request.env['mail.mass_mailing.contact'].sudo().search([('email', 'ilike', email)]) + return request.website.render('mass_mailing.page_unsubscribe', { + 'contacts': contacts, + 'email': email, + 'mailing_id': mailing_id}) + else: + mailing.update_opt_out(mailing_id, email, [res_id], True) + return request.website.render('mass_mailing.page_unsubscribed') + + @http.route(['/mail/mailing/unsubscribe'], type='json', auth='none') + def unsubscribe(self, mailing_id, opt_in_ids, opt_out_ids, email): + mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id) + if mailing.exists(): + mailing.update_opt_out(mailing_id, email, opt_in_ids, False) + mailing.update_opt_out(mailing_id, email, opt_out_ids, True) + + @http.route('/website_mass_mailing/is_subscriber', type='json', website=True, auth="public") + def is_subscriber(self, list_id, **post): + cr, uid, context = request.cr, request.uid, request.context + Contacts = request.registry['mail.mass_mailing.contact'] + Users = request.registry['res.users'] + + is_subscriber = False + email = None + if uid != request.website.user_id.id: + email = Users.browse(cr, SUPERUSER_ID, uid, context).email + elif request.session.get('mass_mailing_email'): + email = request.session['mass_mailing_email'] + + if email: + contact_ids = Contacts.search(cr, SUPERUSER_ID, [('list_id', '=', int(list_id)), ('email', '=', email), ('opt_out', '=', False)], context=context) + is_subscriber = len(contact_ids) > 0 + + return {'is_subscriber': is_subscriber, 'email': email} + + @http.route('/website_mass_mailing/subscribe', type='json', website=True, auth="public") + def subscribe(self, list_id, email, **post): + cr, uid, context = request.cr, request.uid, request.context + Contacts = request.registry['mail.mass_mailing.contact'] + + contact_ids = Contacts.search_read(cr, SUPERUSER_ID, [('list_id', '=', int(list_id)), ('email', '=', email)], ['opt_out'], context=context) + if not contact_ids: + Contacts.add_to_list(cr, SUPERUSER_ID, email, int(list_id), context=context) + else: + if contact_ids[0]['opt_out']: + Contacts.write(cr, SUPERUSER_ID, [contact_ids[0]['id']], {'opt_out': False}, context=context) + # add email to session + request.session['mass_mailing_email'] = email + return True + + @http.route(['/website_mass_mailing/get_content'], type='json', website=True, auth="public") + def get_mass_mailing_content(self, newsletter_id, **post): + data = self.is_subscriber(newsletter_id, **post) + mass_mailing_list = request.registry['mail.mass_mailing.list'].browse(request.cr, SUPERUSER_ID, int(newsletter_id), request.context) + data.update({ + 'content': mass_mailing_list.popup_content, + 'redirect_url': mass_mailing_list.popup_redirect_url + }) + return data |
