from rest_framework.views import APIView
from rest_framework import permissions, status
from rest_framework.response import Response
from rest_framework.authtoken.models import Token
from drf_yasg.utils import swagger_auto_schema
from users.serializers.country_admin_login_serializer import CountryAdminLoginSerializer
from users.serializers.users_serializer import UserSerializer

class CountryAdminLoginView(APIView):
    permission_classes = [permissions.AllowAny]

    @swagger_auto_schema(request_body=CountryAdminLoginSerializer)
    def post(self, request):
        serializer = CountryAdminLoginSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        user = serializer.validated_data["user"]

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

        return Response({
            "token": token.key,
            "user": UserSerializer(user).data,
        }, status=status.HTTP_200_OK)
