-# -*- coding: utf-8 -*-
-
from hashlib import md5
from django.conf import settings
def subscriber_hash(email):
- return md5(email).hexdigest()
+ return md5(email.encode('utf-8')).hexdigest()
def remove_from_groups(email, client):
'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,
+ }
+ )