aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--brevisurl/tests/test_views.py6
-rw-r--r--brevisurl/views.py19
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)