Source code for ferrosoft.apps.ferrobase.management.commands.dumpdata_tenant
from django.core import management
from django.core.management import BaseCommand
from ferrosoft.apps.ferrobase.models import Tenant
[docs]
class Command(BaseCommand):
"""Management command that dumps fixture data from a tenant database.
Thin wrapper around Django's ``dumpdata`` that activates the specified
tenant database connection before delegating to the built-in command.
The ``--tenant`` argument is required.
"""
[docs]
def add_arguments(self, parser):
parser.add_argument("label", nargs="+", type=str)
parser.add_argument(
"--tenant",
help="Tenant name",
type=str,
)
[docs]
def handle(self, *args, **options):
tenant_name = options["tenant"]
if not tenant_name:
print("--tenant required")
return
tenant = Tenant.objects.filter(name=tenant_name).first()
if not tenant:
self.stderr.write("Tenant not found: %s" % tenant_name)
return
tenant.activate_connection()
management.call_command(
"dumpdata",
"--indent",
"2",
options["label"],
database=tenant.database_name,
)