Commit 89e2c60f authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #24000 -- Corrected contrib.sites default site creation in a multiple database setup.

parent e112bacd
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -8,13 +8,13 @@ from django.core.management.color import no_style
from django.db import DEFAULT_DB_ALIAS, connections, router


def create_default_site(app_config, verbosity=2, interactive=True, db=DEFAULT_DB_ALIAS, **kwargs):
def create_default_site(app_config, verbosity=2, interactive=True, using=DEFAULT_DB_ALIAS, **kwargs):
    try:
        Site = apps.get_model('sites', 'Site')
    except LookupError:
        return

    if not router.allow_migrate(db, Site):
    if not router.allow_migrate(using, Site):
        return

    if not Site.objects.exists():
@@ -25,14 +25,14 @@ def create_default_site(app_config, verbosity=2, interactive=True, db=DEFAULT_DB
        # can also crop up outside of tests - see #15346.
        if verbosity >= 2:
            print("Creating example.com Site object")
        Site(pk=settings.SITE_ID, domain="example.com", name="example.com").save(using=db)
        Site(pk=settings.SITE_ID, domain="example.com", name="example.com").save(using=using)

        # We set an explicit pk instead of relying on auto-incrementation,
        # so we need to reset the database sequence. See #17415.
        sequence_sql = connections[db].ops.sequence_reset_sql(no_style(), [Site])
        sequence_sql = connections[using].ops.sequence_reset_sql(no_style(), [Site])
        if sequence_sql:
            if verbosity >= 2:
                print("Resetting sequence")
            with connections[db].cursor() as cursor:
            with connections[using].cursor() as cursor:
                for command in sequence_sql:
                    cursor.execute(command)
+2 −2
Original line number Diff line number Diff line
@@ -151,8 +151,8 @@ class CreateDefaultSiteTests(TestCase):
        """
        #16353, #16828 - The default site creation should respect db routing.
        """
        create_default_site(self.app_config, db='default', verbosity=0)
        create_default_site(self.app_config, db='other', verbosity=0)
        create_default_site(self.app_config, using='default', verbosity=0)
        create_default_site(self.app_config, using='other', verbosity=0)
        self.assertFalse(Site.objects.using('default').exists())
        self.assertTrue(Site.objects.using('other').exists())

+3 −0
Original line number Diff line number Diff line
@@ -172,3 +172,6 @@ Bugfixes
  (:ticket:`24054`).

* Added tablespace SQL to apps with migrations (:ticket:`24051`).

* Corrected ``contrib.sites`` default site creation in a multiple database
  setup (:ticket:`24000`).