You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import hashlib
|
|
|
|
|
|
|
|
from django.db.models.signals import post_save
|
|
|
|
from django.dispatch import receiver
|
|
|
|
from django.conf import settings
|
|
|
|
from mailchimp3 import MailChimp
|
|
|
|
from requests import HTTPError
|
|
|
|
|
|
|
|
from registration.models import Member
|
|
|
|
|
|
|
|
|
|
|
|
@receiver(post_save, sender=Member, dispatch_uid='member.save_member')
|
|
|
|
def update_mailchimp(sender, instance, **kwargs):
|
|
|
|
if instance.email:
|
|
|
|
involvement = {id: True for id in instance.involvement}
|
|
|
|
client = MailChimp(settings.MAILCHIMP_USERNAME, settings.MAILCHIMP_API_KEY)
|
|
|
|
try:
|
|
|
|
response = client.lists.members.create_or_update('1c664549e2',
|
|
|
|
hashlib.md5(bytes(instance.email, 'utf-8')).hexdigest(), {
|
|
|
|
'email_address': instance.email,
|
|
|
|
'status': 'subscribed' if instance.email_consent else 'unsubscribed',
|
|
|
|
'status_if_new': 'subscribed' if instance.email_consent else 'unsubscribed',
|
|
|
|
'merge_fields': {
|
|
|
|
'FNAME': instance.first_name,
|
|
|
|
'LNAME': instance.last_name,
|
|
|
|
},
|
|
|
|
'interests': involvement
|
|
|
|
})
|
|
|
|
except HTTPError as error:
|
|
|
|
pass
|