Source

cmsplugin-news / cmsplugin_news / templatetags / cms_news_tags.py

from django import template
from django.utils.safestring import mark_safe
from cmsplugin_news.models import News
from django.conf import settings

register = template.Library()

class LastNewsNode(template.Node):
    def __init__(self, varname, count):
        self.varname = varname
        self.count = count

    def render(self, context):
    	news = News.published.all()[:self.count]
        context[self.varname] = news
        return ''

def last_news(parser, token):
    tokens = token.split_contents()
    len_tokens = len(tokens)
    if len_tokens < 4:
        raise template.TemplateSyntaxError, "'%s' tag requires three arguments" % tokens[0]
    if tokens[2] != 'as':
        raise template.TemplateSyntaxError, "Second argument to '%s' tag must be 'as'" % tokens[0]
    return LastNewsNode(tokens[3], tokens[1])
last_news = register.tag(last_news)

@register.filter
def textcut(text, autoescape=None):
    try:
        beforesep, aftersep, sep = text.partition('<!-- pagebreak -->')
    except:
        beforesep = text
    return mark_safe(beforesep)