from rest_framework import generics, status from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from .models import Event from .serializers import EventSerializer, EventCreateSerializer, EventUpdateSerializer class EventListView(generics.ListCreateAPIView): serializer_class = EventSerializer permission_classes = [IsAuthenticated] def get_queryset(self): user = self.request.user return Event.objects.filter(user=user).select_related('user', 'linked_user') def perform_create(self, serializer): serializer.save(user=self.request.user) class EventDetailView(generics.RetrieveUpdateDestroyAPIView): serializer_class = EventSerializer permission_classes = [IsAuthenticated] def get_queryset(self): user = self.request.user return Event.objects.filter(user=user).select_related('user', 'linked_user') def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() # Use the update serializer for updates serializer = EventUpdateSerializer( instance, data=request.data, partial=partial ) serializer.is_valid(raise_exception=True) self.perform_update(serializer) return Response(serializer.data) def destroy(self, request, *args, **kwargs): instance = self.get_object() self.perform_destroy(instance) return Response( {'message': 'Event deleted successfully'}, status=status.HTTP_200_OK ) class EventCreateView(generics.CreateAPIView): serializer_class = EventCreateSerializer permission_classes = [IsAuthenticated] def perform_create(self, serializer): serializer.save(user=self.request.user)