from django import template
from django.utils.encoding import force_unicode
import random
register = template.Library()
class ObfuscateNode(template.Node):
def __init__(self, nodelist):
self.nodelist = nodelist
def render(self, context):
s = force_unicode(self.nodelist.render(context))
code_list = []
for c in s:
d = ord(c)
x = random.randint(0, d)
code_list.append("%d+%d" % (x, d-x))
return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % ",".join(code_list)
@register.tag
def obfuscate(parser, token):
"""
Example:
{% obfuscate %}
<form>
...
<input type="submit">
</form>
{% endobfuscate %}
"""
nodelist = parser.parse(('endobfuscate',))
parser.delete_first_token()
return ObfuscateNode(nodelist)
Comments
Wow! Doesn't the HTML produced get extremely large?
#
Size is ok I think, see it live here: http://www.adasweden.se/postit/
#
(But please don't submit anything in that form) ^^
#