from rest_framework.mixins import RetrieveModelMixin, ListModelMixin
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
from drf_spectacular.utils import extend_schema_view, extend_schema
from .serializers import EventListSerializer,EventDetailSerializer
from .models import Event

@extend_schema_view(
    list=extend_schema(
        summary='List Events',
        description='Returns a list of all projects.',
        tags=['Events'],
    ),
    retrieve=extend_schema(
        summary='Retrieve a Event',
        description='Retrieve detailed information about a specific project.',
        tags=['Events'],
    )
)
class EventViewSet(RetrieveModelMixin, ListModelMixin, viewsets.GenericViewSet):
    queryset = Event.objects.all().prefetch_related('images', 'tags').order_by('-created_at')
    permission_classes = [AllowAny]

    def get_serializer_class(self):
        if self.action == 'list':
            return EventListSerializer
        if self.action == 'retrieve':
            return EventDetailSerializer
        return super().get_serializer_class()

    def list(self, request, *args, **kwargs):
        queryset = self.get_queryset().order_by('-id')
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance)
        return Response(serializer.data)