Révision eaac238e
Ajouté par Thomas Noël il y a environ 9 ans
entrouvert/djommon/multitenant/management/commands/__init__.py | ||
---|---|---|
94 | 94 |
https://django-tenant-schemas.readthedocs.org/en/latest/use.html#creating-a-tenant""") |
95 | 95 |
|
96 | 96 |
if options.get('domain'): |
97 |
tenant_schema = options['domain']
|
|
97 |
domain = options['domain']
|
|
98 | 98 |
else: |
99 | 99 |
while True: |
100 |
tenant_schema = input("Enter Tenant Domain ('?' to list schemas): ")
|
|
101 |
if tenant_schema == '?':
|
|
102 |
print('\n'.join(["%s - %s" % (t.schema_name, t.domain_url,) for t in all_tenants]))
|
|
100 |
domain = input("Enter Tenant Domain ('?' to list): ")
|
|
101 |
if domain == '?':
|
|
102 |
print('\n'.join(["%s (schema %s)" % (t.domain_url, t.schema_name) for t in all_tenants]))
|
|
103 | 103 |
else: |
104 | 104 |
break |
105 | 105 |
|
106 |
if tenant_schema not in [t.schema_name for t in all_tenants]:
|
|
107 |
raise CommandError("Invalid tenant schema, '%s'" % (tenant_schema,))
|
|
106 |
if domain not in [t.domain_url for t in all_tenants]:
|
|
107 |
raise CommandError("Invalid tenant, '%s'" % (domain,))
|
|
108 | 108 |
|
109 |
return TenantMiddleware.get_tenant_by_hostname(tenant_schema)
|
|
109 |
return TenantMiddleware.get_tenant_by_hostname(domain)
|
|
110 | 110 |
|
111 | 111 |
|
112 | 112 |
class TenantWrappedCommand(InteractiveTenantOption, BaseCommand): |
... | ... | |
146 | 146 |
self.options = options |
147 | 147 |
|
148 | 148 |
if self.domain: |
149 |
self.schema_name = TenantMiddleware.hostname2schema(domain) |
|
150 |
else: |
|
151 |
self.schema_name = options.get('schema_name') |
|
152 |
|
|
153 |
if self.schema_name: |
|
149 | 154 |
if self.sync_public: |
150 |
raise CommandError("schema should only be used with the --tenant switch.")
|
|
151 |
elif self.domain == get_public_schema_name():
|
|
155 |
raise CommandError("domain should only be used with the --tenant switch.")
|
|
156 |
elif self.schema_name == get_public_schema_name():
|
|
152 | 157 |
self.sync_public = True |
153 | 158 |
else: |
154 | 159 |
self.sync_tenant = True |
entrouvert/djommon/multitenant/management/commands/migrate_schemas.py | ||
---|---|---|
28 | 28 |
super(MigrateSchemasCommand, self).handle(*args, **options) |
29 | 29 |
self.PUBLIC_SCHEMA_NAME = get_public_schema_name() |
30 | 30 |
|
31 |
if self.sync_public and not self.domain:
|
|
32 |
self.domain = self.PUBLIC_SCHEMA_NAME
|
|
31 |
if self.sync_public and not self.schema_name:
|
|
32 |
self.schema_name = self.PUBLIC_SCHEMA_NAME
|
|
33 | 33 |
|
34 | 34 |
if self.sync_public: |
35 |
self.run_migrations(self.domain, settings.SHARED_APPS)
|
|
35 |
self.run_migrations(self.schema_name, settings.SHARED_APPS)
|
|
36 | 36 |
if self.sync_tenant: |
37 |
if self.domain and self.domain != self.PUBLIC_SCHEMA_NAME: |
|
38 |
try: |
|
39 |
tenant = TenantMiddleware.get_tenant_by_hostname(self.domain) |
|
40 |
except TenantNotFound: |
|
41 |
raise RuntimeError('Schema "{}" does not exist'.format( |
|
42 |
self.domain)) |
|
43 |
else: |
|
44 |
self.run_migrations(tenant.schema_name, settings.TENANT_APPS) |
|
37 |
if self.schema_name and self.schema_name != self.PUBLIC_SCHEMA_NAME: |
|
38 |
self.run_migrations(self.schema_name, settings.TENANT_APPS) |
|
45 | 39 |
else: |
46 | 40 |
all_tenants = TenantMiddleware.get_tenants() |
47 | 41 |
for tenant in all_tenants: |
Formats disponibles : Unified diff
multitenant: use self.schema_name in SyncCommon (#6420)