multitenant: use self.schema_name in SyncCommon (#6420)

This commit is contained in:
Thomas NOËL 2015-02-05 14:34:25 +01:00
parent bb762ce4d9
commit eaac238e1b
2 changed files with 19 additions and 20 deletions

View File

@ -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

View File

@ -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: