| 3 | | import datetime |
|---|
| 4 | | |
|---|
| 5 | | class LatestBlogEntriesNode(template.Node): |
|---|
| 6 | | def __init__(self, num, varname): |
|---|
| 7 | | self.num, self.varname = num, varname |
|---|
| 8 | | |
|---|
| 9 | | def render(self, context): |
|---|
| 10 | | context[self.varname] = list(Entry.objects.filter(pub_date__lte=datetime.datetime.now())[:self.num]) |
|---|
| 11 | | return '' |
|---|
| 12 | | |
|---|
| 13 | | def do_get_latest_blog_entries(parser, token): |
|---|
| 14 | | """ |
|---|
| 15 | | {% get_latest_blog_entries 2 as latest_entries %} |
|---|
| 16 | | """ |
|---|
| 17 | | bits = token.contents.split() |
|---|
| 18 | | if len(bits) != 4: |
|---|
| 19 | | raise template.TemplateSyntaxError, "'%s' tag takes three arguments" % bits[0] |
|---|
| 20 | | if bits[2] != 'as': |
|---|
| 21 | | raise template.TemplateSyntaxError, "First argument to '%s' tag must be 'as'" % bits[0] |
|---|
| 22 | | return LatestBlogEntriesNode(bits[1], bits[3]) |
|---|
| 25 | | register.tag('get_latest_blog_entries', do_get_latest_blog_entries) |
|---|
| | 6 | |
|---|
| | 7 | @register.inclusion_tag('blog/entry_snippet.html') |
|---|
| | 8 | def render_latest_blog_entries(num): |
|---|
| | 9 | entries = Entry.objects.filter(pub_date__lte=datetime.datetime.now())[:num] |
|---|
| | 10 | return { |
|---|
| | 11 | 'entries': entries, |
|---|
| | 12 | } |
|---|
| | 13 | |
|---|
| | 14 | @register.inclusion_tag('blog/month_links_snippet.html') |
|---|
| | 15 | def render_month_links(): |
|---|
| | 16 | return { |
|---|
| | 17 | 'dates': Entry.objects.dates('pub_date', 'month'), |
|---|
| | 18 | } |
|---|