summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/auth/tests/test_views.py5
-rw-r--r--django/contrib/contenttypes/views.py24
-rw-r--r--django/contrib/sitemaps/__init__.py12
-rw-r--r--django/contrib/sitemaps/tests/base.py6
4 files changed, 31 insertions, 16 deletions
diff --git a/django/contrib/auth/tests/test_views.py b/django/contrib/auth/tests/test_views.py
index d2910886a9..d37afa3eee 100644
--- a/django/contrib/auth/tests/test_views.py
+++ b/django/contrib/auth/tests/test_views.py
@@ -3,8 +3,8 @@ import itertools
import os
import re
+from django.apps import apps
from django.conf import global_settings, settings
-from django.contrib.sites.models import Site
from django.contrib.sites.requests import RequestSite
from django.contrib.admin.models import LogEntry
from django.contrib.auth.models import User
@@ -446,7 +446,8 @@ class LoginTest(AuthViewsTestCase):
def test_current_site_in_context_after_login(self):
response = self.client.get(reverse('login'))
self.assertEqual(response.status_code, 200)
- if Site._meta.installed:
+ if apps.is_installed('django.contrib.sites'):
+ Site = apps.get_model('sites.Site')
site = Site.objects.get_current()
self.assertEqual(response.context['site'], site)
self.assertEqual(response.context['site_name'], site.name)
diff --git a/django/contrib/contenttypes/views.py b/django/contrib/contenttypes/views.py
index 22df1444a1..430ed800da 100644
--- a/django/contrib/contenttypes/views.py
+++ b/django/contrib/contenttypes/views.py
@@ -1,9 +1,9 @@
from __future__ import unicode_literals
from django import http
+from django.apps import apps
from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site
-from django.contrib.sites.shortcuts import get_current_site
+from django.contrib.sites.requests import RequestSite
from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext as _
@@ -41,7 +41,9 @@ def shortcut(request, content_type_id, object_id):
# relation to the Site object
object_domain = None
- if Site._meta.installed:
+ if apps.is_installed('django.contrib.sites'):
+ Site = apps.get_model('sites.Site')
+
opts = obj._meta
# First, look for an many-to-many relationship to Site.
@@ -67,12 +69,16 @@ def shortcut(request, content_type_id, object_id):
if object_domain is not None:
break
- # Fall back to the current site (if possible).
- if object_domain is None:
- try:
- object_domain = get_current_site(request).domain
- except Site.DoesNotExist:
- pass
+ # Fall back to the current site (if possible).
+ if object_domain is None:
+ try:
+ object_domain = Site.objects.get_current().domain
+ except Site.DoesNotExist:
+ pass
+
+ else:
+ # Fall back to the current request's site.
+ object_domain = RequestSite(request).domain
# If all that malarkey found an object domain, use it. Otherwise, fall back
# to whatever get_absolute_url() returned.
diff --git a/django/contrib/sitemaps/__init__.py b/django/contrib/sitemaps/__init__.py
index ee3d22090d..86bb71b402 100644
--- a/django/contrib/sitemaps/__init__.py
+++ b/django/contrib/sitemaps/__init__.py
@@ -1,9 +1,10 @@
-from django.contrib.sites.models import Site
+from django.apps import apps as django_apps
from django.core import urlresolvers, paginator
from django.core.exceptions import ImproperlyConfigured
from django.utils.six.moves.urllib.parse import urlencode
from django.utils.six.moves.urllib.request import urlopen
+
PING_URL = "http://www.google.com/webmasters/tools/ping"
@@ -32,6 +33,9 @@ def ping_google(sitemap_url=None, ping_url=PING_URL):
if sitemap_url is None:
raise SitemapNotFound("You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.")
+ if not django_apps.is_installed('django.contrib.sites'):
+ raise ImproperlyConfigured("ping_google requires django.contrib.sites, which isn't installed.")
+ Site = django_apps.get_model('sites.Site')
current_site = Site.objects.get_current()
url = "http://%s%s" % (current_site.domain, sitemap_url)
params = urlencode({'sitemap': url})
@@ -75,7 +79,8 @@ class Sitemap(object):
# Determine domain
if site is None:
- if Site._meta.installed:
+ if django_apps.is_installed('django.contrib.sites'):
+ Site = django_apps.get_model('sites.Site')
try:
site = Site.objects.get_current()
except Site.DoesNotExist:
@@ -111,6 +116,9 @@ class Sitemap(object):
class FlatPageSitemap(Sitemap):
def items(self):
+ if not django_apps.is_installed('django.contrib.sites'):
+ raise ImproperlyConfigured("ping_google requires django.contrib.sites, which isn't installed.")
+ Site = django_apps.get_model('sites.Site')
current_site = Site.objects.get_current()
return current_site.flatpage_set.filter(registration_required=False)
diff --git a/django/contrib/sitemaps/tests/base.py b/django/contrib/sitemaps/tests/base.py
index ecddcc737b..cc92c023ce 100644
--- a/django/contrib/sitemaps/tests/base.py
+++ b/django/contrib/sitemaps/tests/base.py
@@ -1,11 +1,10 @@
-from django.contrib.sites.models import Site
+from django.apps import apps
from django.core.cache import cache
from django.db import models
from django.test import TestCase
class TestModel(models.Model):
- "A test model for "
name = models.CharField(max_length=100)
class Meta:
@@ -20,7 +19,8 @@ class TestModel(models.Model):
class SitemapTestsBase(TestCase):
protocol = 'http'
- domain = 'example.com' if Site._meta.installed else 'testserver'
+ sites_installed = apps.is_installed('django.contrib.sites')
+ domain = 'example.com' if sites_installed else 'testserver'
urls = 'django.contrib.sitemaps.tests.urls.http'
def setUp(self):