Example #1
0
 def test_sites_callback_with_parent_host(self):
     rf = RequestFactory(HTTP_HOST="wiki.site2")
     request = rf.get("/simple/")
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, "django_hosts.tests.urls.simple")
     self.assertEqual(request.site, self.site2)
Example #2
0
 def test_sites_callback_with_parent_host(self):
     rf = RequestFactory(HTTP_HOST='wiki.site2')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
     self.assertEqual(request.site.pk, self.site2.pk)
Example #3
0
 def test_sites_callback_with_parent_host(self):
     rf = RequestFactory(HTTP_HOST='wiki.site2')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
     self.assertEqual(request.site.pk, self.site2.pk)
Example #4
0
 def test_manager_missing_site(self):
     rf = RequestFactory(HTTP_HOST='static')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
     self.assertRaises(AttributeError, lambda: request.site)
     self.assertEqual(list(WikiPage.on_site.by_request(request)), [])
Example #5
0
 def test_manager_missing_site(self):
     rf = RequestFactory(HTTP_HOST="static")
     request = rf.get("/simple/")
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, "django_hosts.tests.urls.simple")
     self.assertRaises(AttributeError, lambda: request.site)
     self.assertEqual(list(WikiPage.on_site.by_request(request)), [])
Example #6
0
 def test_manager_simple(self):
     rf = RequestFactory(HTTP_HOST="wiki.site2")
     request = rf.get("/simple/")
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, "django_hosts.tests.urls.simple")
     self.assertEqual(request.site, self.site2)
     self.assertEqual(list(WikiPage.on_site.by_request(request)), [self.page3])
Example #7
0
 def test_manager_simple(self):
     rf = RequestFactory(HTTP_HOST='wiki.site2')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
     self.assertEqual(request.site.pk, self.site2.pk)
     self.assertEqual(list(WikiPage.on_site.by_request(request)),
                      [self.page3])
Example #8
0
 def test_manager_simple(self):
     rf = RequestFactory(HTTP_HOST='wiki.site2')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
     self.assertEqual(request.site.pk, self.site2.pk)
     self.assertEqual(list(WikiPage.on_site.by_request(request)),
                      [self.page3])
Example #9
0
    def test_sites_cached_callback(self):
        rf = RequestFactory(HTTP_HOST='admin.site4')
        request = rf.get('/simple/')
        middleware = HostsMiddleware()
        middleware.process_request(request)

        get_site = lambda: request.site.domain

        # first checking if there is a db query
        self.assertEqual(request.site._wrapped, empty)
        self.assertNumQueries(1, get_site)
        self.assertEqual(request.site._wrapped, self.site4)

        # resetting the wrapped site instance to check the cache value
        request.site._wrapped = empty
        self.assertNumQueries(0, get_site)
        self.assertEqual(request.site.pk, self.site4.pk)
Example #10
0
    def test_sites_cached_callback(self):
        rf = RequestFactory(HTTP_HOST='admin.site4')
        request = rf.get('/simple/')
        middleware = HostsMiddleware()
        middleware.process_request(request)

        get_site = lambda: request.site.domain

        # first checking if there is a db query
        self.assertEqual(request.site._wrapped, empty)
        self.assertNumQueries(1, get_site)
        self.assertEqual(request.site._wrapped, self.site4)

        # resetting the wrapped site instance to check the cache value
        request.site._wrapped = empty
        self.assertNumQueries(0, get_site)
        self.assertEqual(request.site.pk, self.site4.pk)
Example #11
0
class IdView(MappingView, StoreView, ContentNegotiatedView):
    id_mapping_redirects = tuple(
        (re.compile(a), b, frozenset(c))
        for a, b, c in getattr(settings, 'ID_MAPPING_REDIRECTS', ()))

    if 'django_hosts' in settings.INSTALLED_APPS:
        from django_hosts.middleware import HostsMiddleware
        hosts_middleware = HostsMiddleware()

    def get(self, request):
        uri = rdflib.URIRef(request.build_absolute_uri())
        if not IRI.match(uri):
            raise Http404("Invalid IRI")
        if not self.get_types(uri):
            raise Http404("URI has no types; not known around here")

        description_url = doc_forward(uri, described=True)

        for pattern, target, mimetypes in self.id_mapping_redirects:
            match = pattern.match(str(uri))
            if match and self.override_redirect(request, description_url,
                                                mimetypes):
                description_url = target % match.groupdict()
                break

        return HttpResponseSeeOther(description_url)

    def override_redirect(self, request, description_url, mimetypes):
        url = urlparse.urlparse(description_url)
        if 'django_hosts' in settings.INSTALLED_APPS:
            host, _ = self.hosts_middleware.get_host(url.netloc)
            urlconf = host.urlconf
        else:
            urlconf = None

        try:
            view, _, _ = resolve(url.path, urlconf)
        except Resolver404:
            return False

        should_redirect = lambda: True
        renderer = decorators.renderer(None, mimetypes, float('inf'),
                                       None)(should_redirect)

        accepts = self.parse_accept_header(request.META.get('HTTP_ACCEPT', ''))
        renderers = MediaType.resolve(accepts,
                                      (renderer, ) + view.conneg.renderers)

        return renderers and renderers[0] is should_redirect
Example #12
0
 def test_fallback_to_defaulthost(self):
     rf = RequestFactory(HTTP_HOST='ss.example.com')
     request = rf.get('/template/test/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.complex')
Example #13
0
 def test_request_urlconf_module(self):
     rf = RequestFactory(HTTP_HOST='other.example.com')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')
Example #14
0
 def test_fallback_to_defaulthost(self):
     rf = RequestFactory(HTTP_HOST='ss.example.com')
     request = rf.get('/template/test/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.complex')
Example #15
0
 def test_request_urlconf_module(self):
     rf = RequestFactory(HTTP_HOST='other.example.com')
     request = rf.get('/simple/')
     middleware = HostsMiddleware()
     middleware.process_request(request)
     self.assertEqual(request.urlconf, 'django_hosts.tests.urls.simple')