From 534e83143f3273680f73f672950f001bc2b07c59 Mon Sep 17 00:00:00 2001 From: Simon Caminada Date: Thu, 15 Mar 2018 14:55:44 +0100 Subject: [PATCH] mailchimp fixes --- .../scss/modules/plugins/_section_title.scss | 3 ++ requirements.in | 4 +-- src/project/cms_plugins.py | 2 +- src/project/forms.py | 29 ++++++++++++------- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/private/scss/modules/plugins/_section_title.scss b/private/scss/modules/plugins/_section_title.scss index 733df51..a8692e2 100644 --- a/private/scss/modules/plugins/_section_title.scss +++ b/private/scss/modules/plugins/_section_title.scss @@ -18,4 +18,7 @@ font-size: em(300px); font-weight: 900; color: $light_gray; + br { + display: none; + } } \ No newline at end of file diff --git a/requirements.in b/requirements.in index f9c0f50..053972b 100644 --- a/requirements.in +++ b/requirements.in @@ -11,7 +11,7 @@ https://control.divio.com/api/v1/apps/serve/djangocms-text-ckeditor/3.5.3/a7b517 https://control.divio.com/api/v1/apps/serve/django-filer/1.3.0.1/bcb7d25b-6922-48a9-a252-9bc165f6403e/django-filer-1.3.0.1.tar.gz#egg=django-filer==1.3.0.1 # Whoosh==2.7.4 -aldryn-search==0.4.1 +aldryn-search==0.5.0 django-fontawesome==0.3.1 -mailchimp3==2.0.18 +mailchimp3==2.1.0 django-image-cropping==1.1.0 \ No newline at end of file diff --git a/src/project/cms_plugins.py b/src/project/cms_plugins.py index 30b805d..4c362c8 100644 --- a/src/project/cms_plugins.py +++ b/src/project/cms_plugins.py @@ -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']: diff --git a/src/project/forms.py b/src/project/forms.py index caa008e..d00a085 100644 --- a/src/project/forms.py +++ b/src/project/forms.py @@ -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':