from datetime import timedelta
from django.core.management.base import BaseCommand
from django.utils import timezone
from users.security_models import AuthChallenge, AccountSession


class Command(BaseCommand):
    help='Remove expired authentication challenges and old revoked/expired device metadata.'

    def handle(self,**options):
        challenges=AuthChallenge.objects.filter(expires_at__lt=timezone.now()-timedelta(days=1))
        count=challenges.count();challenges.delete()
        cutoff=timezone.now()-timedelta(days=90)
        sessions=AccountSession.objects.filter(expires_at__lt=cutoff)
        sessions_count=sessions.count();sessions.delete()
        self.stdout.write(f'expired_challenges={count} expired_device_sessions={sessions_count}')
