Profile edit and password change views. Better login/logout templates. Some polish...
[cas.git] / src / accounts / templatetags / gravatar.py
1 from django import template
2 from django.template.defaultfilters import stringfilter
3 import hashlib
4 import urllib
5
6 register = template.Library()
7
8 DEFAULTS = dict(size=80, rating='g', default='monsterid')
9
10 class GravatarNode(template.Node):
11
12     def __init__(self, email, size):
13         self.email = template.Variable(email)
14         self.size = size
15
16     def render(self, context):
17         try:
18             email = self.email.resolve(context)
19         except template.VariableDoesNotExist:
20             return ''
21
22         gravatar_url = "http://www.gravatar.com/avatar/" + hashlib.md5(email).hexdigest() + "?"
23         gravatar_url += urllib.urlencode({'default': 'wavatar', 'size': str(self.size)})
24
25         return gravatar_url
26
27 @register.tag
28 def gravatar(parser, token):
29     try:
30         _tag_name, email, size = token.split_contents()
31     except ValueError:
32         raise template.TemplateSyntaxError, "%r tag requires two args" % token.contents.split()[0]
33
34     return GravatarNode(email, int(size))
35
36
37
38
39 @register.filter(name='md5')
40 @stringfilter
41 def md5_hash(value):
42     h = hashlib.md5()
43     h.update(value)
44     return h.hexdigest()