1 from django import template
\r
2 from django.utils.translation import ugettext as _
\r
3 from django.utils.safestring import mark_safe
\r
4 from forum.models import Tag, MarkedTag
\r
5 from forum.templatetags import argument_parser
\r
6 from forum import settings
\r
8 register = template.Library()
\r
10 class QuestionItemNode(template.Node):
\r
11 template = template.loader.get_template('question_list/item.html')
\r
13 def __init__(self, question, options):
\r
14 self.question = template.Variable(question)
\r
15 self.options = options
\r
17 def render(self, context):
\r
18 return self.template.render(template.Context({
\r
19 'question': self.question.resolve(context),
\r
20 'favorite_count': self.options.get('favorite_count', 'no') == 'yes',
\r
21 'signature_type': self.options.get('signature_type', 'lite'),
\r
25 def question_list_item(parser, token):
\r
26 tokens = token.split_contents()[1:]
\r
27 return QuestionItemNode(tokens[0], argument_parser(tokens[1:]))
\r
30 @register.inclusion_tag('question_list/sort_tabs.html')
\r
31 def question_sort_tabs(sort_context):
\r
34 @register.inclusion_tag('question_list/related_tags.html')
\r
35 def question_list_related_tags(questions):
\r
37 tags = Tag.objects.filter(nodes__id__in=[q.id for q in questions]).distinct()
\r
39 if settings.LIMIT_RELATED_TAGS:
\r
40 tags = tags[:settings.LIMIT_RELATED_TAGS]
\r
42 return {'tags': tags}
\r
44 return {'tags': False}
\r
46 @register.inclusion_tag('question_list/tag_selector.html', takes_context=True)
\r
47 def tag_selector(context):
\r
48 request = context['request']
\r
50 if request.user.is_authenticated():
\r
51 pt = MarkedTag.objects.filter(user=request.user)
\r
53 "interesting_tag_names": pt.filter(reason='good').values_list('tag__name', flat=True),
\r
54 'ignored_tag_names': pt.filter(reason='bad').values_list('tag__name', flat=True),
\r
55 'user_authenticated': True,
\r
58 return {'user_authenticated': False}
\r