# --- VIDESH CHALO: AUTOMATIC GARBAGE DISPOSAL v1.0 ---
# Chalane ka tarika: python manage.py cleanup_spam
# Is script ko cPanel mein 'Cron Job' mein set kar sakte hain (Har raat 12 baje)

from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
from allauth.account.models import EmailAddress
from datetime import timedelta
from django.utils import timezone

User = get_user_model()

class Command(BaseCommand):
    help = 'Deletes unverified users older than 24 hours to keep DB clean'

    def handle(self, *args, **options):
        print("🚀 Cleaning up unverified spam accounts...")
        
        # 1. Timeline set karein (24 ghante pehle)
        cutoff = timezone.now() - timedelta(hours=2)
        
        # 2. Wo users pakdein jo 24h se purane hain aur verified NAHI hain
        # Hum Allauth ki EmailAddress table se check karenge
        unverified_emails = EmailAddress.objects.filter(
            verified=False,
            user__date_joined__lt=cutoff
        ).select_related('user')

        count = 0
        for email_obj in unverified_emails:
            user = email_obj.user
            # Staff ya Recruiters ko galti se bhi mat delete karna
            if not user.is_staff and not user.is_superuser:
                # Delete logic
                username = user.username
                user.delete() 
                print(f"🧹 Deleted Bot: {username}")
                count += 1

        # 3. Extra Check: Kabhi kabhi bot account banata hai par email link hi nahi hota
        # Aise "Orphan" users ko saaf karein
        orphan_users = User.objects.filter(
            date_joined__lt=cutoff,
            is_staff=False,
            is_superuser=False
        ).exclude(emailaddress__verified=True)
        
        orphan_count = orphan_users.count()
        orphan_users.delete()

        total_deleted = count + orphan_count
        self.stdout.write(self.style.SUCCESS(f'✨ Mission Clean-up Done! Removed {total_deleted} kachra accounts.'))