c1b824ca80c19bdabf53fbfc56f9c8e716c5ef5a
[django-migdal.git] / migdal / templatetags / migdal_tags.py
1 # -*- coding: utf-8 -*-
2 # This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
4 #
5 from django_comments_xtd.models import XtdComment
6 from django.contrib import comments
7 from django import template
8 from migdal import app_settings
9 from migdal.models import Category, Entry
10 from django.utils.translation import ugettext_lazy as _
11
12 register = template.Library()
13
14
15 @register.simple_tag(takes_context=True)
16 def entry_begin(context, entry, detail=False):
17     t = template.loader.select_template((
18         'migdal/entry/%s/entry_begin.html' % entry.type,
19         'migdal/entry/entry_begin.html',
20     ))
21     context = {
22         'request': context['request'],
23         'object': entry,
24         'detail': detail,
25     }
26     return t.render(template.Context(context))
27
28
29 @register.simple_tag(takes_context=True)
30 def entry_short(context, entry):
31     t = template.loader.select_template((
32         'migdal/entry/%s/entry_short.html' % entry.type,
33         'migdal/entry/entry_short.html',
34     ))
35     context = {
36         'request': context['request'],
37         'object': entry,
38     }
39     return t.render(template.Context(context))
40
41
42 @register.simple_tag(takes_context=True)
43 def entry_promobox(context, entry, counter):
44     t = template.loader.select_template((
45         'migdal/entry/%s/entry_promobox.html' % entry.type,
46         'migdal/entry/entry_promobox.html',
47     ))
48     context = {
49         'request': context['request'],
50         'object': entry,
51         'counter': counter,
52     }
53     return t.render(template.Context(context))
54
55
56 @register.inclusion_tag('migdal/categories.html', takes_context=True)
57 def categories(context, taxonomy):
58     context = {
59         'request': context['request'],
60         'object_list': Category.objects.filter(taxonomy=taxonomy
61                 ).exclude(entry__isnull=True)
62     }
63     return context
64
65
66 @register.inclusion_tag('migdal/last_comments.html')
67 def last_comments(limit=app_settings.LAST_COMMENTS):
68     return {'object_list': 
69         XtdComment.objects.filter(is_public=True, is_removed=False).order_by('-submit_date')[:limit]}
70
71
72 @register.inclusion_tag(['comments/form.html'])
73 def entry_comment_form(entry):
74     return {
75             'form': comments.get_form()(entry),
76             'next': entry.get_absolute_url(),
77         }