]> git.openstreetmap.org Git - osqa.git/commitdiff
Creating a Random number template tag generator. We'll need this one in order to...
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Sat, 9 Apr 2011 17:50:45 +0000 (17:50 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Sat, 9 Apr 2011 17:50:45 +0000 (17:50 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@951 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/templatetags/extra_tags.py

index 76935fe448d3fe753fe6c1d9402c03b8aeadcde9..0a3c42109233e9cbc80135fe1af14b95170b5fac 100644 (file)
@@ -5,6 +5,7 @@ import datetime
 import math
 import re
 import logging
 import math
 import re
 import logging
+import random
 from django import template
 from django.utils.encoding import smart_unicode
 from django.utils.safestring import mark_safe
 from django import template
 from django.utils.encoding import smart_unicode
 from django.utils.safestring import mark_safe
@@ -249,3 +250,27 @@ def do_declare(parser, token):
     nodelist = parser.parse(('enddeclare',))
     parser.delete_first_token()
     return DeclareNode(nodelist)
     nodelist = parser.parse(('enddeclare',))
     parser.delete_first_token()
     return DeclareNode(nodelist)
+
+# Usage: {% random 1 999 %}
+# Generates random number in the template
+class RandomNumberNode(template.Node):
+    # We get the limiting numbers
+    def __init__(self, int_from, int_to):
+        self.int_from = int(int_from)
+        self.int_to = int(int_to)
+
+    # We generate the random number using the standard python interface
+    def render(self, context):
+        return str(random.randint(self.int_from, self.int_to))
+
+@register.tag(name="random")
+def random_number(parser, token):
+    # Try to get the limiting numbers from the token
+    try:
+        tag_name, int_from, int_to = token.split_contents()
+    except ValueError:
+        # If we had no success -- raise an exception
+        raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0]
+
+    # Call the random Node
+    return RandomNumberNode(int_from, int_to)