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 | 
