Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #16353 -- don't try to create Site objects on all databases. Re…

…fs #15573, #15346. Thanks Aymeric Augustin for the report and the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16868 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f91af7252352459cc84dc5da8b367f4c571c9a31 1 parent cfadc36
@carljm carljm authored
View
8 django/contrib/gis/db/backends/spatialite/creation.py
@@ -56,14 +56,6 @@ def create_test_db(self, verbosity=1, autoclobber=False):
interactive=False,
database=self.connection.alias)
- # One effect of calling syncdb followed by flush is that the id of the
- # default site may or may not be 1, depending on how the sequence was
- # reset. If the sites app is loaded, then we coerce it.
- from django.db.models import get_model
- Site = get_model('sites', 'Site')
- if Site is not None and Site.objects.using(self.connection.alias).count() == 1:
- Site.objects.using(self.connection.alias).update(id=settings.SITE_ID)
-
from django.core.cache import get_cache
from django.core.cache.backends.db import BaseDatabaseCache
for cache_alias in settings.CACHES:
View
11 django/contrib/sites/management.py
@@ -3,14 +3,21 @@
"""
from django.db.models import signals
+from django.db import router
from django.contrib.sites.models import Site
from django.contrib.sites import models as site_app
def create_default_site(app, created_models, verbosity, db, **kwargs):
- if Site in created_models:
+ # Only create the default sites in databases where Django created the table
+ if Site in created_models and router.allow_syncdb(db, Site) :
if verbosity >= 2:
print "Creating example.com Site object"
- s = Site(domain="example.com", name="example.com")
+ # The default settings set SITE_ID = 1, and some tests in Django's test
+ # suite rely on this value. However, if database sequences are reused
+ # (e.g. in the test suite after flush/syncdb), it isn't guaranteed that
+ # the next id will be 1, so we coerce it. See #15573 and #16353. This
+ # can also crop up outside of tests - see #15346.
+ s = Site(pk=1, domain="example.com", name="example.com")
s.save(using=db)
Site.objects.clear_cache()
View
8 django/db/backends/creation.py
@@ -248,14 +248,6 @@ def create_test_db(self, verbosity=1, autoclobber=False):
interactive=False,
database=self.connection.alias)
- # One effect of calling syncdb followed by flush is that the id of the
- # default site may or may not be 1, depending on how the sequence was
- # reset. If the sites app is loaded, then we coerce it.
- from django.db.models import get_model
- Site = get_model('sites', 'Site')
- if Site is not None and Site.objects.using(self.connection.alias).count() == 1:
- Site.objects.using(self.connection.alias).update(id=settings.SITE_ID)
-
from django.core.cache import get_cache
from django.core.cache.backends.db import BaseDatabaseCache
for cache_alias in settings.CACHES:
Please sign in to comment.
Something went wrong with that request. Please try again.