[FIX] mass_mailing: possibility to subscribe again to a mailing list
authorDenis Ledoux <dle@odoo.com>
Fri, 1 Aug 2014 12:20:55 +0000 (14:20 +0200)
committerDenis Ledoux <dle@odoo.com>
Fri, 1 Aug 2014 12:20:55 +0000 (14:20 +0200)
It was not possible to subscribe again to a mailing list once unsubscribed

addons/mass_mailing/controllers/main.py

index bfe9750..2fcc6af 100644 (file)
@@ -55,7 +55,7 @@ class MassMailController(http.Controller):
             email = request.session['mass_mailing_email']
 
         if email:
-            contact_ids = Contacts.search(cr, SUPERUSER_ID, [('list_id', '=', int(list_id)), ('email', '=', email)], context=context)
+            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}
@@ -65,9 +65,12 @@ class MassMailController(http.Controller):
         cr, uid, context = request.cr, request.uid, request.context
         Contacts = request.registry['mail.mass_mailing.contact']
 
-        contact_ids = Contacts.search(cr, SUPERUSER_ID, [('list_id', '=', int(list_id)), ('email', '=', email)], context=context)
+        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