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
|