From eaac238e1b98693c44d472420ad92fa938673166 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Thu, 5 Feb 2015 14:34:25 +0100 Subject: [PATCH] multitenant: use self.schema_name in SyncCommon (#6420) --- .../management/commands/__init__.py | 23 +++++++++++-------- .../management/commands/migrate_schemas.py | 16 ++++--------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/entrouvert/djommon/multitenant/management/commands/__init__.py b/entrouvert/djommon/multitenant/management/commands/__init__.py index 6416ac9..601f3fd 100644 --- a/entrouvert/djommon/multitenant/management/commands/__init__.py +++ b/entrouvert/djommon/multitenant/management/commands/__init__.py @@ -94,19 +94,19 @@ To learn how create a tenant, see: https://django-tenant-schemas.readthedocs.org/en/latest/use.html#creating-a-tenant""") if options.get('domain'): - tenant_schema = options['domain'] + domain = options['domain'] else: while True: - tenant_schema = input("Enter Tenant Domain ('?' to list schemas): ") - if tenant_schema == '?': - print('\n'.join(["%s - %s" % (t.schema_name, t.domain_url,) for t in all_tenants])) + domain = input("Enter Tenant Domain ('?' to list): ") + if domain == '?': + print('\n'.join(["%s (schema %s)" % (t.domain_url, t.schema_name) for t in all_tenants])) else: break - if tenant_schema not in [t.schema_name for t in all_tenants]: - raise CommandError("Invalid tenant schema, '%s'" % (tenant_schema,)) + if domain not in [t.domain_url for t in all_tenants]: + raise CommandError("Invalid tenant, '%s'" % (domain,)) - return TenantMiddleware.get_tenant_by_hostname(tenant_schema) + return TenantMiddleware.get_tenant_by_hostname(domain) class TenantWrappedCommand(InteractiveTenantOption, BaseCommand): @@ -146,9 +146,14 @@ class SyncCommon(BaseCommand): self.options = options if self.domain: + self.schema_name = TenantMiddleware.hostname2schema(domain) + else: + self.schema_name = options.get('schema_name') + + if self.schema_name: if self.sync_public: - raise CommandError("schema should only be used with the --tenant switch.") - elif self.domain == get_public_schema_name(): + 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 diff --git a/entrouvert/djommon/multitenant/management/commands/migrate_schemas.py b/entrouvert/djommon/multitenant/management/commands/migrate_schemas.py index 82dd868..074dfd2 100644 --- a/entrouvert/djommon/multitenant/management/commands/migrate_schemas.py +++ b/entrouvert/djommon/multitenant/management/commands/migrate_schemas.py @@ -28,20 +28,14 @@ class MigrateSchemasCommand(SyncCommon): super(MigrateSchemasCommand, self).handle(*args, **options) self.PUBLIC_SCHEMA_NAME = get_public_schema_name() - if self.sync_public and not self.domain: - self.domain = self.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.domain, settings.SHARED_APPS) + self.run_migrations(self.schema_name, settings.SHARED_APPS) if self.sync_tenant: - if self.domain and self.domain != self.PUBLIC_SCHEMA_NAME: - try: - tenant = TenantMiddleware.get_tenant_by_hostname(self.domain) - except TenantNotFound: - raise RuntimeError('Schema "{}" does not exist'.format( - self.domain)) - else: - self.run_migrations(tenant.schema_name, settings.TENANT_APPS) + if self.schema_name and self.schema_name != self.PUBLIC_SCHEMA_NAME: + self.run_migrations(self.schema_name, settings.TENANT_APPS) else: all_tenants = TenantMiddleware.get_tenants() for tenant in all_tenants: