Skip to content
Snippets Groups Projects
Select Git revision
  • 649e5cb8740e6b9bcc15c7747c99923cf7fa8f7f
  • master default protected
  • v5
3 results

save_progress.js

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