diff options
| author | Vladimir Gorej | 2012-06-20 19:37:55 +0200 |
|---|---|---|
| committer | Vladimir Gorej | 2012-06-20 19:37:55 +0200 |
| commit | 2ce8da6800a16c704f81b65ef779de5f0e792aa5 (patch) | |
| tree | 1b3c9b47a0e35927a38a2d233b92481a12511137 | |
| parent | 70f64df91904fb4e9ead44c45028b73a14e8030d (diff) | |
| download | django-brevisurl-2ce8da6800a16c704f81b65ef779de5f0e792aa5.tar.bz2 | |
Issue #1; configurable token length
| -rw-r--r-- | brevisurl/backends/local.py | 3 | ||||
| -rw-r--r-- | brevisurl/settings.py | 9 | ||||
| -rw-r--r-- | 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<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 |
