diff --git a/wagtailio/newsletter/management/commands/sync_mailchimp_campaigns.py b/wagtailio/newsletter/management/commands/sync_mailchimp_campaigns.py index 981bdbdd..69843040 100644 --- a/wagtailio/newsletter/management/commands/sync_mailchimp_campaigns.py +++ b/wagtailio/newsletter/management/commands/sync_mailchimp_campaigns.py @@ -1,28 +1,40 @@ from django.conf import settings from django.core.management.base import BaseCommand -from wagtailio.newsletter.models import NewsletterIndexPage, NewsletterPage - from mailchimp3 import MailChimp +from wagtailio.newsletter.models import NewsletterIndexPage, NewsletterPage -class Command(BaseCommand): +class Command(BaseCommand): def add_arguments(self, parser): - parser.add_argument('--index-page-id', nargs=1, type=int, dest='index_page_id', - help='The ID of the NewsletterIndexPage to add the new pages to') + parser.add_argument( + "--index-page-id", + nargs=1, + type=int, + dest="index_page_id", + help="The ID of the NewsletterIndexPage to add the new pages to", + ) def handle(self, **options): - client = MailChimp(mc_api=settings.MAILCHIMP_API_KEY) - campaigns = client.campaigns.all(get_all=True, fields="campaigns.id,campaigns.settings.title,campaigns.send_time") + campaigns = client.campaigns.all( + get_all=True, + fields="campaigns.id,campaigns.settings.title,campaigns.send_time", + ) if options["index_page_id"]: try: - index_page = NewsletterIndexPage.objects.get(id=options["index_page_id"][0]) + index_page = NewsletterIndexPage.objects.get( + id=options["index_page_id"][0] + ) except NewsletterIndexPage.DoesNotExist: - print("NewsletterIndexPage with ID {} does not exist".format(options["index_page_id"])) + print( + "NewsletterIndexPage with ID {} does not exist".format( + options["index_page_id"] + ) + ) index_page = None else: index_page = NewsletterIndexPage.objects.live().public().first() @@ -30,13 +42,19 @@ def handle(self, **options): if index_page: for campaign in campaigns["campaigns"]: content = client.campaigns.content.get(campaign["id"]) - existing_page = NewsletterPage.objects.filter(mailchimp_campaign_id=campaign["id"]).last() + existing_page = NewsletterPage.objects.filter( + mailchimp_campaign_id=campaign["id"] + ).last() if not existing_page: # check if the campaign has a title, content, send time - if "html" in content.keys() and "send_time" in campaign.keys() and campaign["send_time"] != "" and \ - "title" in campaign["settings"].keys() and campaign["settings"]["title"]: - + if ( + "html" in content.keys() + and "send_time" in campaign.keys() + and campaign["send_time"] != "" + and "title" in campaign["settings"].keys() + and campaign["settings"]["title"] + ): newsletter_page = NewsletterPage( title=campaign["settings"]["title"], mailchimp_campaign_id=campaign["id"], @@ -47,4 +65,8 @@ def handle(self, **options): index_page.add_child(instance=newsletter_page) newsletter_page.save() - print("Created new page for {}".format(campaign["settings"]["title"])) + print( + "Created new page for {}".format( + campaign["settings"]["title"] + ) + ) diff --git a/wagtailio/newsletter/migrations/0004_auto_20231215_2136.py b/wagtailio/newsletter/migrations/0004_auto_20231215_2136.py index 3891d10e..5797d21e 100644 --- a/wagtailio/newsletter/migrations/0004_auto_20231215_2136.py +++ b/wagtailio/newsletter/migrations/0004_auto_20231215_2136.py @@ -1,29 +1,29 @@ # Generated by Django 3.2.18 on 2023-12-15 21:36 from django.db import migrations, models + import wagtail.fields class Migration(migrations.Migration): - dependencies = [ - ('newsletter', '0003_newsletteremailaddress_signed_up_at'), + ("newsletter", "0003_newsletteremailaddress_signed_up_at"), ] operations = [ migrations.AddField( - model_name='newsletterpage', - name='mailchimp_campaign_content', + model_name="newsletterpage", + name="mailchimp_campaign_content", field=models.TextField(blank=True, null=True), ), migrations.AddField( - model_name='newsletterpage', - name='mailchimp_campaign_id', + model_name="newsletterpage", + name="mailchimp_campaign_id", field=models.CharField(blank=True, max_length=255, null=True), ), migrations.AlterField( - model_name='newsletterpage', - name='body', + model_name="newsletterpage", + name="body", field=wagtail.fields.RichTextField(blank=True, null=True), ), ]