diff options
Diffstat (limited to 'brevisurl')
| -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) | 
