import json import logging import requests from django.conf import settings from django.utils.translation import gettext_lazy from wagtail.admin.edit_handlers import ( CommentPanel, FieldPanel, HelpPanel, MultiFieldPanel, ) from wagtail.core.models import Page from wagtail.images.edit_handlers import ImageChooserPanel from tuning import admin_help 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 make_promote_panels( help_content=None, *, seo_title=True, search_description=True, search_image=True ): if help_content is None: help_content = admin_help.build( admin_help.NO_SEO_TITLE, admin_help.NO_SEARCH_IMAGE ) panels = [FieldPanel("slug")] if seo_title: panels.append(FieldPanel("seo_title")) if search_description: panels.append(FieldPanel("search_description")) if search_image: panels.append(ImageChooserPanel("search_image")) panels.append(HelpPanel(help_content)) panels.append(CommentPanel()) 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, } 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}, )