Files
octopus/myproject/tenants/management/commands/init_tenant_data.py
Andrey Smakotin 208c6b55de Консолидация миграций и добавление unit_service
- Обновлены начальные миграции для всех приложений
- Удалены устаревшие миграции для единиц измерения и SKU
- Добавлен новый сервис unit_service.py для управления единицами
- Обновлены команды инициализации данных тенанта
2026-01-03 12:09:31 +03:00

69 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- 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')