from django.contrib.auth import get_user_model
from django.core.management.base import BaseCommand, CommandError
from rest_framework.authtoken.models import Token


class Command(BaseCommand):
    help = "Erstellt oder gibt ein API-Token für einen Django-User aus (für Agent-Zugriff)"

    def add_arguments(self, parser):
        parser.add_argument("username", type=str, help="Django-Username")

    def handle(self, *args, **options):
        User = get_user_model()
        username = options["username"]

        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            raise CommandError(f'User "{username}" nicht gefunden.')

        token, created = Token.objects.get_or_create(user=user)

        if created:
            self.stdout.write(self.style.SUCCESS(f"Neues Token erstellt für {username}:"))
        else:
            self.stdout.write(self.style.WARNING(f"Bestehendes Token für {username}:"))

        self.stdout.write(token.key)
