from rest_framework import mixins from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet from django_core.mixins.base import BaseViewSetMixin from drf_spectacular.utils import extend_schema from rest_framework.permissions import IsAuthenticated from core.apps.accounts.models import UserLike from core.apps.api.serializers.user.like import ( ListUserLikeSerializer, CreateUserLikeSerializer, ) @extend_schema(tags=["User Like"]) class UserLikeViewSet(BaseViewSetMixin, mixins.ListModelMixin, GenericViewSet): serializer_class = ListUserLikeSerializer permission_classes = [IsAuthenticated] http_method_names = ["get", "post", "delete"] action_serializer_class = { "list": ListUserLikeSerializer, "create": CreateUserLikeSerializer, } def create(self, request): ser = self.get_serializer(data=request.data) ser.is_valid(raise_exception=True) instance = UserLike.objects.filter(user=request.user, ad=ser.validated_data.get("ad")).first() if instance is not None: instance.delete() return Response(data={"detail": "deleted"}) self.perform_create(ser) return Response(data={"detail": "created"}) def get_queryset(self): queryset = UserLike.objects.filter(user=self.request.user).order_by("-id") return queryset def perform_create(self, serializer): serializer.save(user=self.request.user)