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)
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)
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)), [])
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)), [])
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])
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])
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)
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
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')
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')