# -*- coding: utf-8 -*- """ Скрипт для активации заявки mixflowers """ import os import django os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') django.setup() from django.db import transaction from django.utils import timezone from tenants.models import TenantRegistration, Client, Domain, Subscription # Ищем заявку registration = TenantRegistration.objects.get(schema_name='mixflowers') print(f'Найдена заявка: {registration.shop_name} ({registration.schema_name})') print(f'Статус: {registration.get_status_display()}') print(f'Email: {registration.owner_email}') print('') with transaction.atomic(): # Создаем тенант print(f'Создание тенанта: {registration.schema_name}') client = Client.objects.create( schema_name=registration.schema_name, name=registration.shop_name, owner_email=registration.owner_email, owner_name=registration.owner_name, phone=registration.phone, is_active=True ) print(f'[OK] Тенант создан (ID: {client.id})') # Создаем домен domain_name = f"{registration.schema_name}.localhost" print(f'Создание домена: {domain_name}') domain = Domain.objects.create( domain=domain_name, tenant=client, is_primary=True ) print(f'[OK] Домен создан (ID: {domain.id})') # Создаем триальную подписку print('Создание триальной подписки на 90 дней') subscription = Subscription.create_trial(client) print(f'[OK] Подписка создана (ID: {subscription.id})') print(f' Истекает: {subscription.expires_at.strftime("%Y-%m-%d")} ({subscription.days_left()} дней)') # Создаем суперпользователя для тенанта print('Создание суперпользователя для тенанта') from django.db import connection from django.contrib.auth import get_user_model from django.conf import settings # Переключаемся на схему тенанта connection.set_tenant(client) User = get_user_model() if not User.objects.filter(email=settings.TENANT_ADMIN_EMAIL).exists(): superuser = User.objects.create_superuser( email=settings.TENANT_ADMIN_EMAIL, name=settings.TENANT_ADMIN_NAME, password=settings.TENANT_ADMIN_PASSWORD ) print(f'[OK] Суперпользователь создан (ID: {superuser.id})') print(f' Email: {superuser.email}') print(f' Password: {settings.TENANT_ADMIN_PASSWORD}') else: print(f'[SKIP] Пользователь с email {settings.TENANT_ADMIN_EMAIL} уже существует') # Возвращаемся в public схему public_tenant = Client.objects.get(schema_name='public') connection.set_tenant(public_tenant) # Обновляем заявку registration.status = TenantRegistration.STATUS_APPROVED registration.processed_at = timezone.now() registration.processed_by = None registration.tenant = client registration.save() print('[OK] Заявка обновлена') print('') print('=' * 60) print('АКТИВАЦИЯ ЗАВЕРШЕНА УСПЕШНО!') print('=' * 60) print(f'Магазин: {client.name}') print(f'Schema: {client.schema_name}') print(f'Домен: http://{domain_name}:8000/') print(f'Подписка до: {subscription.expires_at.strftime("%Y-%m-%d")} ({subscription.days_left()} дней)') print('') print('Доступ к админке:') print(f' URL: http://{domain_name}:8000/admin/') print(f' Email: {settings.TENANT_ADMIN_EMAIL}') print(f' Password: {settings.TENANT_ADMIN_PASSWORD}')