import mailchimp from django.conf import settings from approval_polls.models import Subscription from registration.signals import user_registered from django.dispatch import receiver def get_mailchimp_api(): if hasattr(settings, 'MAILCHIMP_API_KEY'): key = settings.MAILCHIMP_API_KEY else: key = '00000000000000000000000000000000-us1' return mailchimp.Mailchimp(key) def update_subscription(subscription_preference, email, zipcode): errors = [] try: m = get_mailchimp_api() lists = m.lists.list() list_id = lists['data'][0]['id'] if subscription_preference: m.lists.subscribe(list_id, {'email': email}, {'MMERGE3': zipcode}) else: m.lists.unsubscribe(list_id, {'email': email}, {'MMERGE3': zipcode}) except mailchimp.ListAlreadySubscribedError: errors.append('newslettercheckbox') errors.append('That email is already subscribed to the list') except mailchimp.Error as e: errors.append('newslettercheckbox') errors.append(e) return errors @receiver(user_registered) def receive_new_user_registered(sender, user, request, **kwargs): if 'newslettercheckbox' in request.POST: subscr = Subscription(user=user, zipcode=request.POST['zipcode']) subscr.save()