diff -r 6641e941ef1e -r ff1a9aa48cfd app/django/utils/http.py --- 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)