From 69dda1837adb9592fe5a0af8993a8282f6fbbd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 14 Aug 2018 10:14:14 +0200 Subject: [PATCH] multitenant: add filtering to interactive tenant selection (#25677) --- .../management/commands/__init__.py | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/hobo/multitenant/management/commands/__init__.py b/hobo/multitenant/management/commands/__init__.py index c2822f2..139d61c 100644 --- a/hobo/multitenant/management/commands/__init__.py +++ b/hobo/multitenant/management/commands/__init__.py @@ -103,20 +103,23 @@ https://django-tenant-schemas.readthedocs.org/en/latest/use.html#creating-a-tena else: if connection.get_tenant().schema_name != 'public': return connection.get_tenant() + displayed_tenants = all_tenants while True: domain = input("Enter Tenant Domain ('?' to list): ") + if domain in [t.domain_url for t in all_tenants]: + break + try: + domain = displayed_tenants[int(domain)-1].domain_url + break + except (ValueError, IndexError): + pass if domain == '?': - for i, tenant in enumerate(all_tenants): - print("[%2d] %s (schema %s)" % ( - i+1, tenant.domain_url, tenant.schema_name)) + displayed_tenants = all_tenants else: - break - - if domain not in [t.domain_url for t in all_tenants]: - try: - domain = all_tenants[int(domain)-1].domain_url - except (ValueError, IndexError): - raise CommandError("Invalid tenant, '%s'" % (domain,)) + displayed_tenants = [x for x in all_tenants if domain in x.domain_url] + for i, tenant in enumerate(displayed_tenants): + print("[%2d] %s (schema %s)" % ( + i+1, tenant.domain_url, tenant.schema_name)) return TenantMiddleware.get_tenant_by_hostname(domain) -- 2.18.0