mailchimp fixes

This commit is contained in:
2018-03-15 14:55:44 +01:00
parent cc3e58b323
commit 534e83143f
4 changed files with 25 additions and 13 deletions

View File

@@ -274,7 +274,7 @@ class NewsletterArchivePlugin(CMSPluginBase):
def render(self, context, instance, placeholder):
context = super(NewsletterArchivePlugin, self).render(context, instance, placeholder)
client = MailChimp(settings.MAILCHIMP_USERNAME, settings.MAILCHIMP_API_KEY)
client = MailChimp(settings.MAILCHIMP_API_KEY, settings.MAILCHIMP_USERNAME)
campaigns = []
for raw_campaign in client.campaigns.all(get_all=True)['campaigns']:

View File

@@ -1,11 +1,15 @@
# -*- coding: utf-8 -*-
from django.utils.translation import ugettext_lazy as _, get_language
import hashlib
from django import forms
from django.conf import settings
from mailchimp3 import MailChimp
client = MailChimp(settings.MAILCHIMP_USERNAME, settings.MAILCHIMP_API_KEY)
field_names = [_('First Name'), _('Last Name')]
newsletter_client = MailChimp(settings.MAILCHIMP_API_KEY, settings.MAILCHIMP_USERNAME)
newsletter_field_names = {
'FNAME': _('Vorname'),
'LNAME': _('Nachname'),
}
class NewsletterSubscriptionForm(forms.Form):
@@ -14,13 +18,13 @@ class NewsletterSubscriptionForm(forms.Form):
def __init__(self, *args, **kwargs):
super(NewsletterSubscriptionForm, self).__init__(*args, **kwargs)
merge_fields = client.lists.merge_fields.all(list_id=settings.MAILCHIMP_LIST_ID, get_all=True)
merge_fields = newsletter_client.lists.merge_fields.all(list_id=settings.MAILCHIMP_LIST_ID, get_all=True)
for field in merge_fields['merge_fields']:
if field['type'] == 'text':
self.fields[field['tag']] = forms.CharField(
label=field['name'], required=field['required'],
widget=forms.TextInput(
attrs={'placeholder': _(field['name'])}
attrs={'placeholder': newsletter_field_names[field['tag']]}
)
)
@@ -31,12 +35,17 @@ class NewsletterSubscriptionForm(forms.Form):
merge_data.pop('email')
try:
client.lists.members.create(settings.MAILCHIMP_LIST_ID, {
'email_address': cleaned_data['email'],
'language': get_language(),
'status': 'subscribed',
'merge_fields': merge_data,
})
newsletter_client.lists.members.create_or_update(
settings.MAILCHIMP_LIST_ID,
hashlib.md5(cleaned_data['email'].lower().encode('utf-8')).hexdigest(),
{
'email_address': cleaned_data['email'],
'language': get_language(),
'status_if_new': 'pending',
'status': 'pending',
'merge_fields': merge_data,
}
)
except Exception as err:
json_err = err.response.json()
if json_err['title'] == 'Member Exists':