]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/templatetags/question_list_tags.py
ALteration of the schema to a single content model. As a bonus there is a complete...
[osqa.git] / forum / templatetags / question_list_tags.py
index 6238bcea6d28ba290dff84e183b97d5dc9659799..e9b80322eb180240af555098e6e97113d081a07b 100644 (file)
@@ -2,16 +2,29 @@ from django import template
 from django.utils.translation import ugettext as _\r
 from django.utils.safestring import mark_safe\r
 from forum.models import Tag, MarkedTag\r
+from forum.templatetags import argument_parser\r
 \r
 register = template.Library()\r
 \r
-@register.inclusion_tag('question_list/item.html')\r
-def question_list_item(question):\r
-    return {'question': question}\r
+class QuestionItemNode(template.Node):\r
+    template = template.loader.get_template('question_list/item.html')\r
 \r
-@register.inclusion_tag('question_list/item_extended.html')\r
-def question_list_item_extended(question):\r
-    return {'question': question}\r
+    def __init__(self, question, options):\r
+        self.question = template.Variable(question)\r
+        self.options = options\r
+\r
+    def render(self, context):\r
+        return self.template.render(template.Context({\r
+            'question': self.question.resolve(context),\r
+            'favorite_count': self.options.get('favorite_count', 'no') == 'yes',\r
+            'signature_type': self.options.get('signature_type', 'lite'),\r
+        }))\r
+\r
+@register.tag\r
+def question_list_item(parser, token):\r
+    tokens = token.split_contents()[1:]\r
+    return QuestionItemNode(tokens[0], argument_parser(tokens[1:]))\r
+    \r
 \r
 @register.inclusion_tag('question_list/sort_tabs.html')\r
 def question_sort_tabs(sort_context):\r
@@ -20,7 +33,7 @@ def question_sort_tabs(sort_context):
 @register.inclusion_tag('question_list/related_tags.html')\r
 def question_list_related_tags(questions):\r
     if len(questions):\r
-        return {'tags': Tag.objects.filter(questions__id__in=[q.id for q in questions]).distinct()}\r
+        return {'tags': Tag.objects.filter(nodes__id__in=[q.id for q in questions]).distinct()}\r
     else:\r
         return {'tags': False}\r
 \r