diff --git a/README.md b/README.md index ff48c2979c1c0c91025981b389211a3ac4ce9552..e529f48dbd22a0573999baf6e06597cc4691f7d0 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,8 @@ Různé: | `SENTRY_DSN` | | pokud je zadáno, pády se reportují do Sentry | | `SEARCH_CONFIG` | english | nastavení jazyka fulltextového vyhledávání, viz níže | | `DEBUG_TOOLBAR` | False | zobrazit Django Debug Toolbar (pro vývoj) | +| `MAILTRAIN_API_URL` | | URL k API Mailtrain | +| `MAILTRAIN_API_TOKEN` | | token k API Mailtrain | Settings pro appky na weby: diff --git a/czech_inspirational/models.py b/czech_inspirational/models.py index e7c33cbdcb1f950964d7b15c38d0f8d04c0faa35..b92889df8eeeace16da10fa9bdb9bebc3bc3ad5a 100644 --- a/czech_inspirational/models.py +++ b/czech_inspirational/models.py @@ -299,9 +299,7 @@ class CzechInspirationalDownloadPage( pass else: subscribe_to_newsletter( - email, - settings.CZECH_INSPIRATIONAL_NEWSLETTER_ID, - settings.CZECH_INSPIRATIONAL_NEWSLETTER_SOURCE, + email, settings.CZECH_INSPIRATIONAL_NEWSLETTER_CID ) return context diff --git a/elections2021/models.py b/elections2021/models.py index cd452b167b8d1332868967e5eb617b4b7be319ad..dc170d52e6da7aecffde474b4fef1a5b56975dc2 100644 --- a/elections2021/models.py +++ b/elections2021/models.py @@ -518,9 +518,7 @@ class Elections2021HomePage(MetadataPageMixin, RoutablePageMixin, Page): form = SubscribeForm(request.POST) if form.is_valid(): subscribe_to_newsletter( - form.cleaned_data["email"], - settings.ELECTIONS2021_NEWSLETTER_ID, - settings.ELECTIONS2021_NEWSLETTER_SOURCE, + form.cleaned_data["email"], settings.ELECTIONS2021_NEWSLETTER_CID ) try: page = ( diff --git a/main/models.py b/main/models.py index 566ab68b10f935bccac126d85209e9cb371c0132..4522d8423bab6552e1bebae7589ca0cec56c8e2a 100644 --- a/main/models.py +++ b/main/models.py @@ -312,9 +312,7 @@ class MainHomePage( form = SubscribeForm(request.POST) if form.is_valid(): subscribe_to_newsletter( - form.cleaned_data["email"], - settings.PIRATICZ_NEWSLETTER_ID, - settings.PIRATICZ_NEWSLETTER_SOURCE, + form.cleaned_data["email"], settings.PIRATICZ_NEWSLETTER_CID ) messages.success( diff --git a/majak/settings/base.py b/majak/settings/base.py index 618884f2785919dbe42df1f5636318a46d5fd422..db4fe38990c7845158011d6295fb9909747a2db3 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -284,24 +284,17 @@ DONATE_PORTAL_API_URL = env.str("DONATE_PORTAL_API_URL", default="") DONATE_PORTAL_API_TIMEOUT = 5 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í" -) +MAILTRAIN_API_URL = env.str("MAILTRAIN_API_URL", default="") +MAILTRAIN_API_TOKEN = env.str("MAILTRAIN_API_TOKEN", default="") -NALODENI_API_NEWS_SUBSCRIBE_URL = env.str("NALODENI_API_NEWS_SUBSCRIBE_URL", default="") -NALODENI_API_CREDENTIALS = env.str("NALODENI_API_CREDENTIALS", default="") +CZECH_INSPIRATIONAL_NEWSLETTER_CID = env.str( + "CZECH_INSPIRATIONAL_NEWSLETTER_CID", 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" -) +ELECTIONS2021_NEWSLETTER_CID = env.str("ELECTIONS2021_NEWSLETTER_CID", default="") -PIRATICZ_NEWSLETTER_ID = env.int("PIRATICZ_NEWSLETTER_ID", default=0) -PIRATICZ_NEWSLETTER_SOURCE = env.str("PIRATICZ_NEWSLETTER_SOURCE", "Piráti.cz") +PIRATICZ_NEWSLETTER_CID = env.str("PIRATICZ_NEWSLETTER_CID", default="") # URL pointing to MapProxy instance to use. # MapProxy is used to serve map tiles to hide client details from the tile provider. diff --git a/shared/utils.py b/shared/utils.py index c2a42ee84b0a6be4d82297831b6b93af60086128..48a1cc3205bff9cbfd9092545448d2c446bab499 100644 --- a/shared/utils.py +++ b/shared/utils.py @@ -1,6 +1,7 @@ import json import logging import urllib.request +from urllib.parse import urljoin import bleach import requests @@ -53,22 +54,15 @@ def make_promote_panels( return [MultiFieldPanel(panels, gettext_lazy("Common page configuration"))] -def subscribe_to_newsletter(email, news_id, source): - payload = { - "email": email, - "news_id": news_id, - "source": source, - "verify_email": 1, - } +def subscribe_to_newsletter(email, list_id): + url = urljoin(settings.MAILTRAIN_API_URL, f"subscribe/{list_id}") + data = {"EMAIL": email, "FORCE_SUBSCRIBE": False, "REQUIRE_CONFIRMATION": True} response = requests.post( - settings.NALODENI_API_NEWS_SUBSCRIBE_URL, - data=json.dumps(payload), - auth=tuple(settings.NALODENI_API_CREDENTIALS.split(":")), + url, data=data, headers={"access-token": settings.MAILTRAIN_API_TOKEN} ) if response.status_code != 200: logger.error( - "Failed to subscribe!", - extra={"payload": payload, "response": response.text}, + "Failed to subscribe!", extra={"data": data, "response": response.text} )