Skip to content
Snippets Groups Projects
Select Git revision
  • deffe6f1229ae88bc13dbc763930f1a4160ca143
  • test default protected
  • master protected
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
  • features/extend-hero-banner
  • features/add-link-to-images
21 results

utils.py

Blame
  • utils.py 2.26 KiB
    import json
    import logging
    
    import bleach
    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 FieldPanel
    
    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(FieldPanel("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},
            )
    
    
    def strip_all_html_tags(value: str):
        """Drop all HTML tags from given value.
    
        :param value: string to sanitize
        """
        return bleach.clean(value, tags=[], attributes=[], strip=True, strip_comments=True)
    
    
    def trim_to_length(value: str, max_length: int = 150):
        """Trim value to max length shall it exceed it.
    
        :param value: input string
        :param max_length: max allowed length
        """
        if len(value) > max_length:
            return value[:max_length] + "..."
        return value