Projet

Général

Profil

« Précédent | Suivant » 

Révision eaac238e

Ajouté par Thomas Noël il y a environ 9 ans

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

Voir les différences:

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