aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Gorej2012-06-20 19:37:55 +0200
committerVladimir Gorej2012-06-20 19:37:55 +0200
commit2ce8da6800a16c704f81b65ef779de5f0e792aa5 (patch)
tree1b3c9b47a0e35927a38a2d233b92481a12511137
parent70f64df91904fb4e9ead44c45028b73a14e8030d (diff)
downloaddjango-brevisurl-2ce8da6800a16c704f81b65ef779de5f0e792aa5.tar.bz2
Issue #1; configurable token length
-rw-r--r--brevisurl/backends/local.py3
-rw-r--r--brevisurl/settings.py9
-rw-r--r--brevisurl/urls.py3
3 files changed, 12 insertions, 3 deletions
diff --git a/brevisurl/backends/local.py b/brevisurl/backends/local.py
index 6c3f6b4..9cb37a6 100644
--- a/brevisurl/backends/local.py
+++ b/brevisurl/backends/local.py
@@ -57,8 +57,9 @@ class BrevisUrlBackend(BaseBrevisUrlBackend):
log.exception('Unknown exception raised while shortening url "%s"', original_url)
raise
- def __generate_token(self, size=5):
+ def __generate_token(self):
chars = brevisurl.settings.LOCAL_BACKEND_TOKEN_CHARS
+ size = brevisurl.settings.LOCAL_BACKEND_TOKEN_LENGTH
if ShortUrl.objects.count() >= math.pow(len(chars), size):
raise TokensExhaustedError('Consider incrementing the token length or change the char list')
random.shuffle(chars)
diff --git a/brevisurl/settings.py b/brevisurl/settings.py
index 32d7fbf..5037a07 100644
--- a/brevisurl/settings.py
+++ b/brevisurl/settings.py
@@ -10,4 +10,11 @@ DEFAULT_BACKEND = getattr(settings, 'BREVISURL_BACKEND', 'brevisurl.backends.loc
LOCAL_BACKEND_DOMAIN = getattr(settings, 'BREVISURL_BACKEND_LOCAL_DOMAIN', None)
# Characters that are used to generate tokens for local backend
-LOCAL_BACKEND_TOKEN_CHARS = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_CHARS', list(string.ascii_letters + string.digits)) \ No newline at end of file
+LOCAL_BACKEND_TOKEN_CHARS = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_CHARS', list(string.ascii_letters + string.digits))
+
+# Settings for token length
+LOCAL_BACKEND_TOKEN_LENGTH = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_LENGTH', 5)
+
+# Settings for url pattern
+LOCAL_BACKEND_URL_PATTERN = getattr(settings, 'BREVISURL_LOCAL_BACKEND_URL_PATTERN',
+ r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$') \ No newline at end of file
diff --git a/brevisurl/urls.py b/brevisurl/urls.py
index e2ca7e9..cf9b51a 100644
--- a/brevisurl/urls.py
+++ b/brevisurl/urls.py
@@ -1,8 +1,9 @@
from django.conf.urls import patterns, url
+import brevisurl.settings
from brevisurl import views
urlpatterns = patterns('brevisurl.views',
- url(r'^(?P<token>[a-zA-Z0-9]{5})$', views.BrevisUrlRedirectView.as_view(), name='brevisurl_redirect'),
+ url(brevisurl.settings.LOCAL_BACKEND_URL_PATTERN, views.BrevisUrlRedirectView.as_view(), name='brevisurl_redirect'),
) \ No newline at end of file