Projet

Général

Profil

0001-multitenant-use-self.schema_name-in-SyncCommon-6420.patch

Thomas Noël, 05 février 2015 14:42

Télécharger (4,35 ko)

Voir les différences:

Subject: [PATCH] multitenant: use self.schema_name in SyncCommon (#6420)

 .../multitenant/management/commands/__init__.py    | 23 +++++++++++++---------
 .../management/commands/migrate_schemas.py         | 16 +++++----------
 2 files changed, 19 insertions(+), 20 deletions(-)
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:
48
-