6a737d1e9c295432cede2d3774c9f76e8410289e
[matthijs/projects/xerxes.git] / tools / templatetags / encode_email.py
1 import random\r
2 from django import template\r
3 """\r
4     Randomized string encoding\r
5     Inspired by John Gruber's Markdown: \r
6     http://daringfireball.net/projects/markdown/syntax#autolink\r
7 """\r
8 register = template.Library()\r
9 \r
10 #@template.stringfilter\r
11 def encode_string(value):\r
12     """\r
13     Encode a string into it's equivalent html entity.\r
14 \r
15     The tag will randomly choose to represent the character as a hex digit or\r
16     decimal digit.\r
17    \r
18     Use {{ obj.name|encode_string }}\r
19     \r
20     {{ "person"|encode_string }} Becomes something like:\r
21     person\r
22     """\r
23     e_string = "" \r
24     for a in value:\r
25         type = random.randint(0,1)\r
26         if type:\r
27             en = "&#x%x;" % ord(a)\r
28         else:\r
29             en = "&#%d;" % ord(a)\r
30         e_string += en \r
31     return e_string\r
32 \r
33 register.filter("encode_string", encode_string)\r
34 \r
35 def encode_mailto(value, arg):\r
36     """\r
37     Encode an e-mail address and its corresponding link name to its equivalent\r
38     html entities.\r
39 \r
40     Use {{ obj.email|encode_mailto:obj.name }}\r
41     \r
42     {{ "j@j.com"|encode_mailto:"j" }} Becomes something like:\r
43     <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#111;&#x3a;&#106;&#x40;&#106;\\r
44     &#46;&#99;&#x6f;&#x6d;">&#x6a;</a>\r
45     """\r
46     address = 'mailto:%s' % value\r
47     address = encode_string(address)\r
48     name = encode_string(arg)\r
49     tag = "<a href=\"%s\">%s</a>" % (address, name)\r
50     return tag\r
51 \r
52 register.filter("encode_mailto", encode_mailto)\r