diff --git a/README.md b/README.md index 0b4ba971a430081f2c937221a5a8bc7f9142d236..657476c1d2f83ae9d1fbde63f00d36d9a1df8797 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 26535bfa4b0e045fb7c754dac3c4da8393cebfd4..4bf2a0b6942fc9a891fb4512d9ddbf084228c32f 100644 --- a/main/models.py +++ b/main/models.py @@ -298,9 +298,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( @@ -491,19 +489,13 @@ class MainArticlesPage( def get_all_articles_search_response(self, request): article_paginator = Paginator( - MainArticlePage - .objects - .order_by("-date") - .live() - .search(request.GET["q"]), + MainArticlePage.objects.order_by("-date").live().search(request.GET["q"]), 10, ) article_page = article_paginator.get_page(request.GET.get("page", 1)) context = {"article_data_list": article_page.object_list} html_content = render( - request, - "main/includes/person_article_preview.html", - context + request, "main/includes/person_article_preview.html", context ).content data = { "html": html_content.decode("utf-8"), @@ -519,16 +511,11 @@ class MainArticlesPage( def search(self, request): if request.method == "GET" and "q" in request.GET: query = request.GET["q"] - + article_results = ( - MainArticlePage - .objects - .order_by("-date") - .live() - .search(query) - [:11] + MainArticlePage.objects.order_by("-date").live().search(query)[:11] ) - + return render( request, "main/main_article_search.html", @@ -537,8 +524,8 @@ class MainArticlesPage( "query": query, "article_results": article_results[:10], "show_more_articles": len(article_results) > 10, - "sub_heading": f"Vyhledávánà „{query}“" - } + "sub_heading": f"Vyhledávánà „{query}“", + }, ) else: return HttpResponseRedirect(self.url) @@ -962,9 +949,7 @@ class MainCrossroadPage( verbose_name = "RozcestnĂk s kartami" -class MainHoaxPage( - ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page -): +class MainHoaxPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page): ### FIELDS description = RichTextField( @@ -974,9 +959,7 @@ class MainHoaxPage( ) content = StreamField( - [ - (("hoax"), blocks.HoaxBlock()) - ], + [(("hoax"), blocks.HoaxBlock())], verbose_name="Hoaxy a jejich vysvÄ›tlenĂ", blank=True, use_json_field=True, diff --git a/majak/settings/base.py b/majak/settings/base.py index 80b8a3240b2d297f1e9335945caff1f7ef43a7ed..aa91786518444d60ebe03ec0fc8c1169af63e9c1 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} )