From a54cc3173ebb8da0dcbad3ad7d542899d90b134a Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 2 Mar 2019 12:28:02 +0100 Subject: [PATCH 3/3] migrate_schemas: remove migration of public schema (fixes #31042) --- .../management/commands/__init__.py | 22 ++++--------------- .../management/commands/migrate_schemas.py | 9 +------- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/hobo/multitenant/management/commands/__init__.py b/hobo/multitenant/management/commands/__init__.py index 139d61c..7d35674 100644 --- a/hobo/multitenant/management/commands/__init__.py +++ b/hobo/multitenant/management/commands/__init__.py @@ -52,8 +52,6 @@ class BaseTenantCommand(BaseCommand): def add_arguments(self, parser): super(BaseTenantCommand, self).add_arguments(parser) parser.add_argument("-d", "--domain", dest="domain") - parser.add_argument("-p", "--skip-public", dest="skip_public", - action="store_true", default=False) # use the privately held reference to the underlying command to invoke # the add_arguments path on this parser instance self._original_command.add_arguments(parser) @@ -82,8 +80,7 @@ class BaseTenantCommand(BaseCommand): self.execute_command(TenantMiddleware.get_tenant_by_hostname(options['domain']), self.COMMAND_NAME, *args, **options) else: for tenant in TenantMiddleware.get_tenants(): - if not (options['skip_public'] and tenant.schema_name == get_public_schema_name()): - self.execute_command(tenant, self.COMMAND_NAME, *args, **options) + self.execute_command(tenant, self.COMMAND_NAME, *args, **options) class InteractiveTenantOption(object): @@ -152,10 +149,6 @@ class TenantWrappedCommand(InteractiveTenantOption, BaseCommand): class SyncCommon(BaseCommand): def add_arguments(self, parser): - parser.add_argument('--tenant', action='store_true', dest='tenant', default=False, - help='Tells Django to populate only tenant applications.') - parser.add_argument('--shared', action='store_true', dest='shared', default=False, - help='Tells Django to populate only shared applications.') parser.add_argument('--app_label', action='store', dest='app_label', nargs='?', help='App label of an application to synchronize the state.') parser.add_argument('--migration_name', action='store', dest='migration_name', nargs='?', @@ -164,8 +157,6 @@ class SyncCommon(BaseCommand): parser.add_argument("-d", "--domain", dest="domain") def handle(self, *args, **options): - self.sync_tenant = options.get('tenant') - self.sync_public = options.get('shared') self.domain = options.get('domain') self.installed_apps = settings.INSTALLED_APPS self.args = args @@ -176,17 +167,12 @@ class SyncCommon(BaseCommand): else: self.schema_name = options.get('schema_name') + self.sync_tenant = False if self.schema_name: - if self.sync_public: - raise CommandError("domain should only be used with the --tenant switch.") - elif self.schema_name == get_public_schema_name(): - self.sync_public = True - else: - self.sync_tenant = True - elif not self.sync_public and not self.sync_tenant: + self.sync_tenant = True + elif not self.sync_tenant: # no options set, sync both self.sync_tenant = True - self.sync_public = True if hasattr(settings, 'TENANT_APPS'): self.tenant_apps = settings.TENANT_APPS diff --git a/hobo/multitenant/management/commands/migrate_schemas.py b/hobo/multitenant/management/commands/migrate_schemas.py index 05c26d5..2f3367e 100644 --- a/hobo/multitenant/management/commands/migrate_schemas.py +++ b/hobo/multitenant/management/commands/migrate_schemas.py @@ -47,15 +47,8 @@ class MigrateSchemasCommand(SyncCommon): def handle(self, *args, **options): super(MigrateSchemasCommand, self).handle(*args, **options) - self.PUBLIC_SCHEMA_NAME = get_public_schema_name() - - if self.sync_public and not self.schema_name: - self.schema_name = self.PUBLIC_SCHEMA_NAME - - if self.sync_public: - self.run_migrations(self.schema_name, settings.SHARED_APPS) if self.sync_tenant: - if self.schema_name and self.schema_name != self.PUBLIC_SCHEMA_NAME: + if self.schema_name: if not schema_exists(self.schema_name): raise RuntimeError('Schema "{}" does not exist'.format( self.schema_name)) -- 2.20.1