from rest_framework import generics, permissions from rest_framework.exceptions import PermissionDenied from rest_framework.response import Response from rest_framework.views import APIView from .models import VendorProfile from .serializers import UserMeSerializer, VendorProfileSerializer, VendorRegistrationSerializer class VendorRegistrationView(generics.CreateAPIView): serializer_class = VendorRegistrationSerializer permission_classes = (permissions.AllowAny,) def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() return Response(UserMeSerializer(user).data, status=201) class MeView(APIView): permission_classes = (permissions.IsAuthenticated,) def get(self, request): return Response(UserMeSerializer(request.user).data) class VendorProfileMeView(generics.RetrieveUpdateAPIView): serializer_class = VendorProfileSerializer permission_classes = (permissions.IsAuthenticated,) def get_object(self): user = self.request.user if not user.is_vendor: raise PermissionDenied("Only vendors can access vendor profile setup.") return VendorProfile.objects.get(user=user)