nephila/djangocms-page-sitemap

View on GitHub
djangocms_page_sitemap/templatetags/robots_index.py

Summary

Maintainability
A
1 hr
Test Coverage
from classytags.arguments import Argument
from classytags.core import Options, Tag
from cms.templatetags.cms_tags import _get_page_by_untyped_arg
from django import template
from django.contrib.sites.shortcuts import get_current_site
from django.core.exceptions import ObjectDoesNotExist

register = template.Library()


@register.tag(name="page_robots")
class PageRobots(Tag):
    """
    Generates the robots meta tag according to the extension attributes
    """

    name = "page_robots"
    options = Options(
        Argument("page", required=False),
        Argument("site_id", required=False),
    )

    def render_tag(self, context, page, site_id):
        request = context.get("request")
        if not request:
            return ""
        if not site_id:
            site_id = get_current_site(request).pk
        if not page:
            try:
                page = request.current_page
            except AttributeError:
                pass
        else:
            page = _get_page_by_untyped_arg(page, request, site_id)
        content = []
        if not page:
            return ""
        try:
            if page.pagesitemapproperties.noindex:
                content.append("noindex")
            if page.pagesitemapproperties.noarchive:
                content.append("noarchive")
            if page.pagesitemapproperties.robots_extra:
                content.append(page.pagesitemapproperties.robots_extra)
            return '<meta name="robots" content="%s">' % ",".join(content)
        except ObjectDoesNotExist:
            return ""