diff --git a/czech_inspirational/models.py b/czech_inspirational/models.py index 68f90f0aa008e12121ccb6e9f6159ff158fc85b0..d23c5679d35ee6daf61d1e0895ffecaa587093ff 100644 --- a/czech_inspirational/models.py +++ b/czech_inspirational/models.py @@ -1,7 +1,3 @@ -import json -import logging - -import requests from django.conf import settings from django.core.exceptions import ValidationError from django.core.validators import validate_email @@ -20,11 +16,10 @@ from wagtail.images.edit_handlers import ImageChooserPanel from wagtailmetadata.models import MetadataPageMixin from shared.models import SubpageMixin +from shared.utils import subscribe_to_newsletter from tuning import help from uniweb.constants import RICH_TEXT_FEATURES -logger = logging.getLogger() - class CzechInspirationalHomePage(Page, MetadataPageMixin): ### FIELDS @@ -285,19 +280,10 @@ class CzechInspirationalDownloadPage(Page, SubpageMixin, MetadataPageMixin): except ValidationError: pass else: - payload = { - "email": email, - "news_id": settings.CZECH_INSPIRATIONAL_NEWSLETTER_ID, - } - response = requests.post( - settings.NALODENI_API_NEWS_SUBSCRIBE_URL, - data=json.dumps(payload), - auth=tuple(settings.NALODENI_API_CREDENTIALS.split(":")), + subscribe_to_newsletter( + email, + settings.CZECH_INSPIRATIONAL_NEWSLETTER_ID, + settings.CZECH_INSPIRATIONAL_NEWSLETTER_SOURCE, ) - if response.status_code != 200: - logger.error( - "Failed to subscribe!", - extra={"email": email, "response": response.text}, - ) return context diff --git a/majak/settings/base.py b/majak/settings/base.py index 080a5df5396ffac08f6db54d0cd07491d2475f88..13e42d36b878c72689689e500f4c484e0e6d605c 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -254,7 +254,15 @@ DONATE_PORTAL_API_CACHE_TIMEOUT = 60 * 5 CZECH_INSPIRATIONAL_NEWSLETTER_ID = env.int( "CZECH_INSPIRATIONAL_NEWSLETTER_ID", default=0 ) +CZECH_INSPIRATIONAL_NEWSLETTER_SOURCE = env.str( + "CZECH_INSPIRATIONAL_NEWSLETTER_SOURCE", default="ÄŚesko inspirativnĂ" +) + NALODENI_API_NEWS_SUBSCRIBE_URL = env.str("NALODENI_API_NEWS_SUBSCRIBE_URL", default="") NALODENI_API_CREDENTIALS = env.str("NALODENI_API_CREDENTIALS", default="") ELECTIONS2021_COOKIE_NAME = "program" +ELECTIONS2021_NEWSLETTER_ID = env.int("ELECTIONS2021_NEWSLETTER_ID", default=0) +ELECTIONS2021_NEWSLETTER_SOURCE = env.str( + "ELECTIONS2021_NEWSLETTER_SOURCE", "Koalice 2021" +) diff --git a/shared/utils.py b/shared/utils.py index f4e3713c0a84cd7b949afaf6f9eee723a1b9afa3..7f854d99a340646fd9b4868627d791ce6634848c 100644 --- a/shared/utils.py +++ b/shared/utils.py @@ -1,8 +1,33 @@ +import json +import logging + +import requests +from django.conf import settings from wagtail.core.models import Page +logger = logging.getLogger() + def get_subpage_url(page, dest_page_type): try: return page.get_descendants().type(dest_page_type).live().first().get_url() except (Page.DoesNotExist, AttributeError): return "#" + + +def subscribe_to_newsletter(email, news_id, source): + payload = { + "email": email, + "news_id": news_id, + "source": source, + } + response = requests.post( + settings.NALODENI_API_NEWS_SUBSCRIBE_URL, + data=json.dumps(payload), + auth=tuple(settings.NALODENI_API_CREDENTIALS.split(":")), + ) + if response.status_code != 200: + logger.error( + "Failed to subscribe!", + extra={"payload": payload, "response": response.text}, + )