diff options
| -rw-r--r-- | brevisurl/tests/test_views.py | 6 | ||||
| -rw-r--r-- | brevisurl/views.py | 19 |
2 files changed, 18 insertions, 7 deletions
diff --git a/brevisurl/tests/test_views.py b/brevisurl/tests/test_views.py index ca20c43..ec46911 100644 --- a/brevisurl/tests/test_views.py +++ b/brevisurl/tests/test_views.py @@ -3,6 +3,7 @@ from django.test.client import Client from django.core.urlresolvers import reverse from django.contrib.sites.models import Site +import brevisurl.settings from brevisurl import get_connection from brevisurl.models import ShortUrl @@ -10,6 +11,8 @@ from brevisurl.models import ShortUrl class TestBrevisUrlRedirectView(TestCase): def setUp(self): + self.LOCAL_BACKEND_DOMAIN = brevisurl.settings.LOCAL_BACKEND_DOMAIN + brevisurl.settings.LOCAL_BACKEND_DOMAIN = None self.site = Site.objects.get_current() self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') self.short_url = ShortUrl() @@ -19,6 +22,9 @@ class TestBrevisUrlRedirectView(TestCase): self.short_url.save() self.client = Client() + def tearDown(self): + brevisurl.settings.LOCAL_BACKEND_DOMAIN = self.LOCAL_BACKEND_DOMAIN + def test_redirect(self): response = self.client.get(reverse('brevisurl_redirect', kwargs={'token': 12345})) self.assertEqual(response.status_code, 301) diff --git a/brevisurl/views.py b/brevisurl/views.py index 21cd1a5..82cf875 100644 --- a/brevisurl/views.py +++ b/brevisurl/views.py @@ -3,8 +3,10 @@ import logging from django.http import Http404 from django.contrib.sites.models import Site from django.views.generic.base import RedirectView +from django.core.urlresolvers import reverse from django.core.exceptions import ImproperlyConfigured +import brevisurl.settings from brevisurl import get_connection from brevisurl.models import ShortUrl @@ -21,14 +23,17 @@ class BrevisUrlRedirectView(RedirectView): log.exception('Token not found in keyword arguments') raise Http404 connection = get_connection('brevisurl.backends.local.BrevisUrlBackend') - protocol = connection.PROTOCOL + if brevisurl.settings.LOCAL_BACKEND_DOMAIN is not None: + domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN.rstrip('/') + else: + try: + site = Site.objects.get_current() + domain = '{0}://{1}'.format(connection.PROTOCOL, site.domain) + except ImproperlyConfigured: + log.exception('No site object configured for this django project') + raise Http404 try: - site = Site.objects.get_current() - except ImproperlyConfigured: - log.exception('No site object configured for this django project') - raise Http404 - try: - short_url = '{0}://{1}/{2}'.format(protocol, site.domain, token) + short_url = '{0}{1}'.format(domain, reverse('brevisurl_redirect', kwargs={'token': token})) short_url_obj = ShortUrl.objects.get(backend=connection.class_path, shortened_url=short_url) except ShortUrl.DoesNotExist: log.exception('No shortened url found for backend: "%s" and token: "%s"', connection.class_path, token) |
