X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e81500796eb5163e07ac6b02109666747fb0c206..3fceb197b7f492cf5cfcb4034b6e045638f128d4:/src/contact/mailing.py diff --git a/src/contact/mailing.py b/src/contact/mailing.py index 2034766cd..baacf3def 100644 --- a/src/contact/mailing.py +++ b/src/contact/mailing.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - from hashlib import md5 from django.conf import settings @@ -8,7 +6,7 @@ from mailchimp3.mailchimpclient import MailChimpError def subscriber_hash(email): - return md5(email).hexdigest() + return md5(email.encode('utf-8')).hexdigest() def remove_from_groups(email, client): @@ -48,3 +46,26 @@ def subscribe(email, mailing_lists=None): 'interests': interests, } ) + + +def unsubscribe(email, mailing_lists=None): + client = MailChimp(mc_api=settings.MAILCHIMP_API_KEY, timeout=10.0) + try: + member = client.lists.members.get(settings.MAILCHIMP_LIST_ID, subscriber_hash(email)) + except MailChimpError: + return + else: + if member['status'] != 'subscribed': + return + mailing_lists = mailing_lists or settings.MAILCHIMP_GROUP_IDS + interests = { + settings.MAILCHIMP_GROUP_IDS[mailing_list]: False + for mailing_list in mailing_lists + if mailing_list in settings.MAILCHIMP_GROUP_IDS + } + client.lists.members.update( + settings.MAILCHIMP_LIST_ID, subscriber_hash(email), + data={ + 'interests': interests, + } + )