# -*- coding: utf-8 -*- """ Management команда для инициализации всех системных данных тенанта. Создаёт: - Системного клиента (анонимный покупатель для POS) - Системные статусы заказов - Системные способы оплаты - Склад по умолчанию - Витрину по умолчанию - Единицы измерения Использование: # Инициализация для конкретного тенанта python manage.py init_tenant_data --schema=anatol # С флагом --reset для пересоздания данных python manage.py init_tenant_data --schema=anatol --reset """ from django.core.management.base import BaseCommand from django_tenants.utils import get_tenant_model, schema_context class Command(BaseCommand): help = 'Инициализация всех системных данных тенанта (клиент, статусы, способы оплаты, склад, витрина, единицы измерения)' def add_arguments(self, parser): parser.add_argument( '--schema', type=str, required=True, help='Имя схемы БД тенанта (пример: anatol)' ) parser.add_argument( '--reset', action='store_true', help='Удалить и пересоздать все системные данные' ) def handle(self, *args, **options): schema_name = options.get('schema') reset = options.get('reset', False) # Проверяем что тенант существует Tenant = get_tenant_model() try: tenant = Tenant.objects.get(schema_name=schema_name) except Tenant.DoesNotExist: self.stdout.write(self.style.ERROR(f'\nОШИБКА: Тенант со схемой "{schema_name}" не найден\n')) return self.stdout.write(self.style.SUCCESS('\n=== Инициализация системных данных тенанта ===\n')) self.stdout.write(f'Тенант: {tenant.name} ({schema_name})') if reset: self.stdout.write(self.style.WARNING('Режим: RESET (пересоздание данных)\n')) else: self.stdout.write('') # Переключаемся на схему тенанта и вызываем сервис with schema_context(schema_name): from tenants.services import TenantOnboardingService TenantOnboardingService.init_tenant_data(reset=reset) # Итоговое сообщение self.stdout.write('\n' + '='*70) self.stdout.write(self.style.SUCCESS('УСПЕХ: Инициализация системных данных завершена!')) self.stdout.write('='*70) self.stdout.write('\nТенант готов к работе.\n')