Projet

Général

Profil

0003-migrate_schemas-remove-migration-of-public-schema-fi.patch

Benjamin Dauvergne, 06 juin 2019 19:33

Télécharger (4,72 ko)

Voir les différences:

Subject: [PATCH 3/3] migrate_schemas: remove migration of public schema (fixes
 #31042)

 .../management/commands/__init__.py           | 20 +++----------------
 .../management/commands/migrate_schemas.py    |  9 +--------
 2 files changed, 4 insertions(+), 25 deletions(-)
hobo/multitenant/management/commands/__init__.py
52 52
    def add_arguments(self, parser):
53 53
        super(BaseTenantCommand, self).add_arguments(parser)
54 54
        parser.add_argument("-d", "--domain", dest="domain")
55
        parser.add_argument("-p", "--skip-public", dest="skip_public",
56
                            action="store_true", default=False)
57 55
        # use the privately held reference to the underlying command to invoke
58 56
        # the add_arguments path on this parser instance
59 57
        self._original_command.add_arguments(parser)
......
82 80
            self.execute_command(TenantMiddleware.get_tenant_by_hostname(options['domain']), self.COMMAND_NAME, *args, **options)
83 81
        else:
84 82
            for tenant in TenantMiddleware.get_tenants():
85
                if not (options['skip_public'] and tenant.schema_name == get_public_schema_name()):
86
                    self.execute_command(tenant, self.COMMAND_NAME, *args, **options)
83
                self.execute_command(tenant, self.COMMAND_NAME, *args, **options)
87 84

  
88 85

  
89 86
class InteractiveTenantOption(object):
......
152 149
class SyncCommon(BaseCommand):
153 150

  
154 151
    def add_arguments(self, parser):
155
        parser.add_argument('--tenant', action='store_true', dest='tenant', default=False,
156
                    help='Tells Django to populate only tenant applications.')
157
        parser.add_argument('--shared', action='store_true', dest='shared', default=False,
158
                    help='Tells Django to populate only shared applications.')
159 152
        parser.add_argument('--app_label', action='store', dest='app_label', nargs='?',
160 153
                    help='App label of an application to synchronize the state.')
161 154
        parser.add_argument('--migration_name', action='store', dest='migration_name', nargs='?',
......
164 157
        parser.add_argument("-d", "--domain", dest="domain")
165 158

  
166 159
    def handle(self, *args, **options):
167
        self.sync_tenant = options.get('tenant')
168
        self.sync_public = options.get('shared')
169 160
        self.domain = options.get('domain')
170 161
        self.installed_apps = settings.INSTALLED_APPS
171 162
        self.args = args
......
176 167
        else:
177 168
            self.schema_name = options.get('schema_name')
178 169

  
170
        self.sync_public = False
179 171
        if self.schema_name:
180
            if self.sync_public:
181
                raise CommandError("domain should only be used with the --tenant switch.")
182
            elif self.schema_name == get_public_schema_name():
183
                self.sync_public = True
184
            else:
185
                self.sync_tenant = True
172
            self.sync_tenant = True
186 173
        elif not self.sync_public and not self.sync_tenant:
187 174
            # no options set, sync both
188 175
            self.sync_tenant = True
189
            self.sync_public = True
190 176

  
191 177
        if hasattr(settings, 'TENANT_APPS'):
192 178
            self.tenant_apps = settings.TENANT_APPS
hobo/multitenant/management/commands/migrate_schemas.py
47 47

  
48 48
    def handle(self, *args, **options):
49 49
        super(MigrateSchemasCommand, self).handle(*args, **options)
50
        self.PUBLIC_SCHEMA_NAME = get_public_schema_name()
51

  
52
        if self.sync_public and not self.schema_name:
53
            self.schema_name = self.PUBLIC_SCHEMA_NAME
54

  
55
        if self.sync_public:
56
            self.run_migrations(self.schema_name, settings.SHARED_APPS)
57 50
        if self.sync_tenant:
58
            if self.schema_name and self.schema_name != self.PUBLIC_SCHEMA_NAME:
51
            if self.schema_name:
59 52
                if not schema_exists(self.schema_name):
60 53
                    raise RuntimeError('Schema "{}" does not exist'.format(
61 54
                        self.schema_name))
62
-