# backend/apps/hadis/management/commands/make_books_independent.py import random from django.core.management.base import BaseCommand from django.db import transaction from apps.hadis.models import BookReference, BookEdition class Command(BaseCommand): help = 'Makes 50% of BookReferences independent by deleting their BookEditions.' def handle(self, *args, **options): all_books = list(BookReference.objects.all()) if not all_books: self.stdout.write(self.style.ERROR("No books found.")) return # انتخاب ۵۰ درصد رندوم num_to_detach = len(all_books) // 2 books_to_detach = random.sample(all_books, num_to_detach) self.stdout.write(self.style.WARNING(f"Deleting editions from {num_to_detach} books...")) with transaction.atomic(): # حذف تمام ادیشن‌های مرتبط با این ۵۰ درصد کتاب BookEdition.objects.filter(book_reference__in=books_to_detach).delete() self.stdout.write(self.style.SUCCESS(f"✅ {num_to_detach} books are now independent (no editions)."))