Files
octopus/myproject/cleanup_showcase_kits.py

53 lines
1.9 KiB
Python
Raw 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.
"""
Скрипт для очистки витринных комплектов без резервов.
Запуск: python manage.py shell < cleanup_showcase_kits.py
"""
from django.db import connection
from products.models import ProductKit
from inventory.models import Reservation
# Устанавливаем схему tenant
schema_name = 'anatol'
with connection.cursor() as cursor:
cursor.execute(f'SET search_path TO {schema_name}')
print('=' * 70)
print(f'ОЧИСТКА ВИТРИННЫХ КОМПЛЕКТОВ БЕЗ РЕЗЕРВОВ (схема: {schema_name})')
print('=' * 70)
# Находим все активные витринные комплекты
showcase_kits = ProductKit.objects.filter(
is_temporary=True,
showcase__isnull=False,
status='active'
).select_related('showcase')
orphaned_kits = []
for kit in showcase_kits:
# Проверяем наличие зарезервированных компонентов
has_reservations = Reservation.objects.filter(
product_kit=kit,
showcase=kit.showcase,
status='reserved'
).exists()
if not has_reservations:
orphaned_kits.append(kit)
if not orphaned_kits:
print('\n✅ Проблемных комплектов не найдено. Все витринные комплекты имеют резервы.\n')
else:
print(f'\n⚠️ Найдено {len(orphaned_kits)} витринных комплектов БЕЗ РЕЗЕРВОВ:\n')
for kit in orphaned_kits:
print(
f' • ID: {kit.id} | "{kit.name}" | Витрина: {kit.showcase.name} | '
f'Цена: {kit.actual_price} руб.'
)
print('\n📝 Для удаления запустите скрипт с подтверждением')
print('Или удалите вручную через админку Django\n')
print('=' * 70)