django-yaturbo documentation

https://github.com/idlesign/django-yaturbo

Description

Reusable Django app to enable Yandex Turbo Pages for your site

This app allows you to define Yandex Turbo pages feeds in term similar to those of Django Syndication Feed Framework contrib.

Requirements

LBC Python 2
  1. Python 2.7+, 3.5+
  2. Django 1.8+

Table of Contents

Quickstart

  1. Inherit your feed class from YandexTurboFeed:
# feeds.py
from yaturbo import YandexTurboFeed

class TurboFeed(YandexTurboFeed):
    """
    More information on Django Syndication Feed Framework configuration:
    https://docs.djangoproject.com/en/2.0/ref/contrib/syndication/
    """

    turbo_sanitize = True  # Let's strip HTML tags unsupported by Turbo pages.

    def item_turbo(self, item):
        # By default Turbo contents is taken from `item_description`.
        # Here we take turbo page contents from `html` attribute of an item.
        # Since we have `turbo_sanitize = True`, our HTML will be sanitized
        # automatically.
        #
        # Take a note, that if we return falsy item would be considered
        # as not having turbo contents at all.
        #
        return item.get('html', '')

       # You can also override other item_turbo_* family members.
  1. Pass an instantiated (and optionally configured) feed object to urlpatterns:
# urls.py
from .feeds import TurboFeed

feed = TurboFeed()

# configure Yandex Metrika counter
feed.configure_analytics_yandex('123456789')

# configure Yandex Advertisement Network
feed.configure_ad_yandex('A-123', 'page-top')

urlpatterns = [
    ...
    path('feeds/turbo/', feed),
    ...
]

API

class yaturbo.toolbox.YandexTurboFeed

Yandex Turbo Pages Feed.

from yaturbo import YandexTurboFeed

class TurboFeed(YandexTurboFeed):
    '''
    More information on Django Syndication Feed Framework configuration:
    https://docs.djangoproject.com/en/2.0/ref/contrib/syndication/

    '''

    turbo_sanitize = True  # Let's strip HTML tags unsupported by Turbo pages.

    def item_turbo(self, item):
        return 'turbo contents'


feed = TurboFeed()

# configure Yandex Metrika counter
feed.configure_analytics_yandex('123456789')

# configure Yandex Advertisement Network
feed.configure_ad_yandex('A-123', 'page-top')


urlpatterns = [
    ...
    path('turbo/', feed),
    ...
]
configure_ad_yandex(ident, turbo_id=u'')

Configure Yandex Advertisement Network.

Parameters:
  • ident (str|unicode) – Ad ID.
  • turbo_id (str|unicode) – ID of a place (figure) on Turbo page where to put an Ad block.
configure_analytics_google(ident)

Configure Google Analytics counter.

Parameters:ident (str|unicode) – Counter ID.
configure_analytics_yandex(ident, params=None)

Configure Yandex Metrika analytics counter.

Parameters:
  • ident (str|unicode) – Metrika counter ID.
  • params (dict) – Additional params.
item_turbo(item)

This can be overridden to set turbo contents.

Parameters:item
Return type:str|unicode
item_turbo_source(item)

This can be overridden to set turbo source URL.

Can be used with Yandex Metrika.

Parameters:item
Return type:str|unicode
item_turbo_topic(item)

This can be overridden to set turbo page topic (title).

Can be used with Yandex Metrika.

Parameters:item
Return type:str|unicode
turbo_sanitize = False

Whether to automatically sanitize HTML contents returned from .item_turbo().

Can be useful if you do not keep special HTML for Turbo pages.

yaturbo.toolbox.sanitize_turbo(html, allowed_tags=[u'a', u'abbr', u'b', u'big', u'blockquote', u'br', u'button', u'code', u'dd', u'del', u'div', u'dl', u'dt', u'em', u'figcaption', u'figure', u'form', u'h1', u'h2', u'h3', u'h4', u'h5', u'h6', u'header', u'hr', u'i', u'iframe', u'img', u'ins', u'li', u'menu', u'meta', u'ol', u'p', u'pre', u'small', u'source', u'strong', u'sub', u'sup', u'table', u'td', u'th', u'tr', u'u', u'ul', u'video'], allowed_attrs={u'a': [u'data-turbo', u'href'], u'abbr': [u'title'], u'button': [u'data-agreement-company', u'data-agreement-link', u'data-background-color', u'data-color', u'data-primary', u'data-send-to', u'data-turbo', u'disabled', u'formaction'], u'div': [u'data-agreement-company', u'data-agreement-link', u'data-author', u'data-avatar-url', u'data-block', u'data-color', u'data-description', u'data-expanded', u'data-height', u'data-icon', u'data-item-view', u'data-layout', u'data-network', u'data-send-to', u'data-stick', u'data-subtitle', u'data-thumb', u'data-thumb-position', u'data-thumb-ratio', u'data-title', u'data-type', u'data-url', u'data-value', u'data-view', u'itemscope', u'itemtype'], u'figure': [u'data-platform-desktop', u'data-platform-mobile', u'data-turbo-ad-id'], u'form': [u'action', u'data-agreement-company', u'data-agreement-link', u'data-send-to', u'data-type', u'method', u'name', u'placeholder', u'type'], u'iframe': [u'allowfullscreen', u'frameborder', u'hd', u'height', u'referrerpolicy', u'sandbox', u'src', u'width'], u'img': [u'src'], u'meta': [u'content', u'itemprop'], u'source': [u'data-duration', u'data-title', u'src', u'type'], u'table': [u'data-invisible'], u'video': [u'height', u'width']})

Sanitizes HTML, removing not allowed tags and attributes.

Parameters:
  • html (str|unicode) –
  • allowed_tags (list) – List of allowed tags.
  • allowed_attrs (dict) – Dictionary with attributes allowed for tags.
Return type:

unicode