diff options
Diffstat (limited to 'django/utils/http.py')
-rw-r--r-- | django/utils/http.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/django/utils/http.py b/django/utils/http.py index 5ec6e92d28..7d2af95c47 100644 --- a/django/utils/http.py +++ b/django/utils/http.py @@ -65,3 +65,32 @@ def http_date(epoch_seconds=None): """ 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) |