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