]> git.openstreetmap.org Git - osqa.git/blob - forum/templatetags/user_tags.py
8ab1bb2b4eb30d264ac6c83282a1ead667c90cde
[osqa.git] / forum / templatetags / user_tags.py
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 import const\r
5 \r
6 register = template.Library()\r
7 \r
8 class UserSignatureNode(template.Node):\r
9     template = template.loader.get_template('users/signature.html')\r
10 \r
11     def __init__(self, user, format):\r
12         self.user = template.Variable(user)\r
13         self.format = template.Variable(format)\r
14 \r
15     def render(self, context):\r
16         return self.template.render(template.Context({\r
17             'user': self.user.resolve(context),\r
18             'format': self.format.resolve(context)\r
19         }))\r
20 \r
21 @register.tag        \r
22 def user_signature(parser, token):\r
23     try:\r
24         tag_name, user, format = token.split_contents()\r
25     except ValueError:\r
26         raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0]\r
27 \r
28     return UserSignatureNode(user, format)\r
29 \r
30 \r
31 class ActivityNode(template.Node):\r
32     template = template.loader.get_template('users/activity.html')\r
33 \r
34     def __init__(self, activity, viewer):\r
35         self.activity = template.Variable(activity)\r
36         self.viewer = template.Variable(viewer)\r
37 \r
38     def render(self, context):\r
39         try:\r
40             action = self.activity.resolve(context).leaf()\r
41             viewer = self.viewer.resolve(context)\r
42             describe = mark_safe(action.describe(viewer))\r
43             return self.template.render(template.Context(dict(action=action, describe=describe)))\r
44         except Exception, e:\r
45             #import sys, traceback\r
46             #traceback.print_exc(file=sys.stdout)\r
47             pass\r
48 \r
49 @register.tag\r
50 def activity_item(parser, token):\r
51     try:\r
52         tag_name, activity, viewer = token.split_contents()\r
53     except ValueError:\r
54         raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0]\r
55 \r
56     return ActivityNode(activity, viewer)\r
57 \r
58 \r
59 @register.inclusion_tag('users/moderation.html')\r
60 def user_moderation(moderator, user):\r
61     \r
62     return dict(user=user)\r