app/django/utils/http.py
changeset 323 ff1a9aa48cfd
parent 54 03e267d67478
--- a/app/django/utils/http.py	Tue Oct 14 12:36:55 2008 +0000
+++ b/app/django/utils/http.py	Tue Oct 14 16:00:59 2008 +0000
@@ -65,3 +65,32 @@
     """
     rfcdate = formatdate(epoch_seconds)
     return '%s GMT' % rfcdate[:25]
+
+# Base 36 functions: useful for generating compact URLs
+
+def base36_to_int(s):
+    """
+    Convertd a base 36 string to an integer
+    """
+    return int(s, 36)
+
+def int_to_base36(i):
+    """
+    Converts an integer to a base36 string
+    """
+    digits = "0123456789abcdefghijklmnopqrstuvwxyz"
+    factor = 0
+    # Find starting factor
+    while True:
+        factor += 1
+        if i < 36 ** factor:
+            factor -= 1
+            break
+    base36 = []
+    # Construct base36 representation
+    while factor >= 0:
+        j = 36 ** factor
+        base36.append(digits[i / j])
+        i = i % j
+        factor -= 1
+    return ''.join(base36)