cmsplugin-news / cmsplugin_news / templatetags /

from django import template
from cmsplugin_news.models import News
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)