diff options
| author | Vladimir Gorej | 2012-06-20 20:49:43 +0200 |
|---|---|---|
| committer | Vladimir Gorej | 2012-06-20 20:49:43 +0200 |
| commit | 178d820541e874fe9913080c5125876b9c0b82ca (patch) | |
| tree | 9253fc8b190c7e9e957d55ebf7de28609a06c276 | |
| parent | 395fa7a203aba58e24362f55a6997f2fc82deb2a (diff) | |
| download | django-brevisurl-178d820541e874fe9913080c5125876b9c0b82ca.tar.bz2 | |
Issue #5; Configure protocol of local backend via settings
| -rw-r--r-- | brevisurl/backends/local.py | 5 | ||||
| -rw-r--r-- | brevisurl/settings.py | 5 | ||||
| -rw-r--r-- | brevisurl/tests/backends/test_local.py | 23 | ||||
| -rw-r--r-- | brevisurl/tests/templatetags/test_brevisurltags.py | 4 | ||||
| -rw-r--r-- | brevisurl/tests/test_models.py | 7 | ||||
| -rw-r--r-- | brevisurl/tests/test_views.py | 3 | ||||
| -rw-r--r-- | brevisurl/views.py | 2 |
7 files changed, 39 insertions, 10 deletions
diff --git a/brevisurl/backends/local.py b/brevisurl/backends/local.py index 741904d..2c54c5b 100644 --- a/brevisurl/backends/local.py +++ b/brevisurl/backends/local.py @@ -20,8 +20,6 @@ class TokensExhaustedError(Error): class BrevisUrlBackend(BaseBrevisUrlBackend): - PROTOCOL = 'http' - def shorten_url(self, original_url): """ :raises: ImproperlyConfigured, django.core.exceptions.ValidationError @@ -46,7 +44,8 @@ class BrevisUrlBackend(BaseBrevisUrlBackend): kwargs={'token': self.__generate_token()})) else: current_site = Site.objects.get_current() - short_url.shortened_url = '{0}://{1}{2}'.format(self.PROTOCOL, current_site.domain, + short_url.shortened_url = '{0}://{1}{2}'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, + current_site.domain, reverse('brevisurl_redirect', kwargs={'token': self.__generate_token()})) short_url.original_url = original_url diff --git a/brevisurl/settings.py b/brevisurl/settings.py index 5037a07..3334798 100644 --- a/brevisurl/settings.py +++ b/brevisurl/settings.py @@ -17,4 +17,7 @@ LOCAL_BACKEND_TOKEN_LENGTH = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_LE # 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 + r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$') + +# Protocol for local backend +LOCAL_BACKEND_DOMAIN_PROTOCOL = getattr(settings, 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL', 'http')
\ No newline at end of file diff --git a/brevisurl/tests/backends/test_local.py b/brevisurl/tests/backends/test_local.py index 620b9a4..ebf27e8 100644 --- a/brevisurl/tests/backends/test_local.py +++ b/brevisurl/tests/backends/test_local.py @@ -14,6 +14,7 @@ class TestLocalBrevisUrlBackend(TestCase): self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') def test_shorten_url_use_site_framework(self): + _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN brevisurl.settings.LOCAL_BACKEND_DOMAIN = None self.assertEqual(ShortUrl.objects.all().count(), 0) original_url = 'http://www.codescale.net/' @@ -21,15 +22,18 @@ class TestLocalBrevisUrlBackend(TestCase): self.assertEqual(ShortUrl.objects.all().count(), 1) self.assertEqual(short_url.original_url, original_url) self.assertRegexpMatches(short_url.shortened_url, URLValidator.regex) + brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain def test_shorten_url_domain_from_settings(self): self.assertEqual(ShortUrl.objects.all().count(), 0) + _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN brevisurl.settings.LOCAL_BACKEND_DOMAIN = 'http://brevisurl.net/' original_url = 'http://www.codescale.net/' short_url = self.connection.shorten_url(original_url) self.assertEqual(ShortUrl.objects.all().count(), 1) self.assertEqual(short_url.original_url, original_url) self.assertRegexpMatches(short_url.shortened_url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$') + brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain def test_shorten_url_reuse_old(self): original_url = 'http://www.codescale.net/' @@ -95,4 +99,21 @@ class TestLocalBrevisUrlBackend(TestCase): self.assertEqual(ShortUrl.objects.all().count(), 0) short_url = connection.shorten_url(original_url) self.assertEqual(ShortUrl.objects.all().count(), 1) - self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/.{5}')
\ No newline at end of file + self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/.{5}') + + def test_configurable_protocol(self): + _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN + brevisurl.settings.LOCAL_BACKEND_DOMAIN = None + original_url = 'http://www.codescale.net/' + self.assertEqual(ShortUrl.objects.all().count(), 0) + short_url = self.connection.shorten_url(original_url) + self.assertEqual(ShortUrl.objects.all().count(), 1) + self.assertRegexpMatches(short_url.shortened_url, '^http://') + original_url = 'http://www.codescale.net/another' + _default_protocol = brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL + brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL = 'https' + short_url = self.connection.shorten_url(original_url) + self.assertEqual(ShortUrl.objects.all().count(), 2) + self.assertRegexpMatches(short_url.shortened_url, '^https://') + brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL = _default_protocol + brevisurl.settings.LOCAL_BACKEND_DOMAIN = None
\ No newline at end of file diff --git a/brevisurl/tests/templatetags/test_brevisurltags.py b/brevisurl/tests/templatetags/test_brevisurltags.py index b4c7c56..808dc2d 100644 --- a/brevisurl/tests/templatetags/test_brevisurltags.py +++ b/brevisurl/tests/templatetags/test_brevisurltags.py @@ -38,6 +38,7 @@ class TestShortenUrlTag(TestCase): def test_absurl_tag_domain_from_settings(self): + _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN brevisurl.settings.LOCAL_BACKEND_DOMAIN = 'http://brevisurl.net/' url = Template(""" {% load brevisurltags %} @@ -46,4 +47,5 @@ class TestShortenUrlTag(TestCase): """).render(Context()).strip() self.assertEqual(ShortUrl.objects.all().count(), 1) self.assertRegexpMatches(url, URLValidator.regex) - self.assertRegexpMatches(url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$')
\ No newline at end of file + self.assertRegexpMatches(url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$') + brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain
\ No newline at end of file diff --git a/brevisurl/tests/test_models.py b/brevisurl/tests/test_models.py index 6942124..9a843f1 100644 --- a/brevisurl/tests/test_models.py +++ b/brevisurl/tests/test_models.py @@ -2,6 +2,7 @@ from django.core.exceptions import ValidationError from django.test import TestCase from django.contrib.sites.models import Site +import brevisurl.settings from brevisurl.models import ShortUrl from brevisurl import get_connection @@ -13,7 +14,8 @@ class TestModels(TestCase): connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') short_url = ShortUrl() short_url.original_url = 'http://www.codescale.net/' - short_url.shortened_url = '{0}://{1}/12345'.format(connection.PROTOCOL, site.domain) + short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, + site.domain) short_url.backend = connection.class_path short_url.save() self.assertIsNotNone(short_url.pk) @@ -24,7 +26,8 @@ class TestModels(TestCase): self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') self.short_url = ShortUrl() self.short_url.original_url = 'www.codescale.' - self.short_url.shortened_url = '{0}://{1}/12345'.format(self.connection.PROTOCOL, self.site.domain) + self.short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, + self.site.domain) self.short_url.backend = self.connection.class_path self.short_url.save() diff --git a/brevisurl/tests/test_views.py b/brevisurl/tests/test_views.py index ec46911..b943a1d 100644 --- a/brevisurl/tests/test_views.py +++ b/brevisurl/tests/test_views.py @@ -17,7 +17,8 @@ class TestBrevisUrlRedirectView(TestCase): self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') self.short_url = ShortUrl() self.short_url.original_url = 'http://www.codescale.net/' - self.short_url.shortened_url = '{0}://{1}/12345'.format(self.connection.PROTOCOL, self.site.domain) + self.short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, + self.site.domain) self.short_url.backend = self.connection.class_path self.short_url.save() self.client = Client() diff --git a/brevisurl/views.py b/brevisurl/views.py index 82cf875..965439d 100644 --- a/brevisurl/views.py +++ b/brevisurl/views.py @@ -28,7 +28,7 @@ class BrevisUrlRedirectView(RedirectView): else: try: site = Site.objects.get_current() - domain = '{0}://{1}'.format(connection.PROTOCOL, site.domain) + domain = '{0}://{1}'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, site.domain) except ImproperlyConfigured: log.exception('No site object configured for this django project') raise Http404 |
