From 2ce8da6800a16c704f81b65ef779de5f0e792aa5 Mon Sep 17 00:00:00 2001 From: Vladimir Gorej Date: Wed, 20 Jun 2012 19:37:55 +0200 Subject: Issue #1; configurable token length --- brevisurl/backends/local.py | 3 ++- brevisurl/settings.py | 9 ++++++++- brevisurl/urls.py | 3 ++- 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[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[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 -- cgit v1.2.3