def post(request):
        request.data[
            '_id'] = request.user.username + "_" + request.data['id_event']
        serializer = RatingsSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        if serializer.save():
            ratings = RatingsSerializer(
                Ratings.objects.filter(id_event=serializer.data['id_event']),
                many=True)
            number_of_ratings = len(ratings.data)
            event = EventsSerializer(
                Events.objects.get(
                    _id=serializer.data['id_event'])).data.copy()
            if event['ratings'] is None:
                event['ratings'] = serializer.data["rate"]
            else:
                event['ratings'] = (event['ratings'] + serializer.data["rate"]
                                    ) / number_of_ratings
            eserializer = EventsSerializer(data=event)
            eserializer.is_valid(raise_exception=True)
            if eserializer.save():
                reservation = ReservationsSerializer(
                    Reservations.objects.get(
                        _id=request.data['id_event'] + "_" +
                        str(request.user.id))).data.copy()
                reservation['id_review'] = serializer.data["_id"]
                rserializer = ReservationsSerializer(data=reservation)
                rserializer.is_valid(raise_exception=True)
                rserializer.save()

        return Response(data=serializer.data, status=status.HTTP_201_CREATED)
    def put(self, request, *args, **kwargs):
        event_id = self.kwargs['id']
        try:
            event = Events.objects.get(_id=event_id)
        except Events.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        serializer = EventsSerializer(event, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(status=status.HTTP_200_OK)
    def put(self, request, *args, **kwargs):
        rating_id = self.kwargs['id']
        try:
            rating = Ratings.objects.get(_id=rating_id)
        except Events.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        number_of_ratings = len(
            RatingsSerializer(Ratings.objects.filter(id_event=rating.id_event),
                              many=True).data)
        event = EventsSerializer(
            Events.objects.get(_id=rating.id_event)).data.copy()
        event['ratings'] -= rating.rate
        event['ratings'] = (event['ratings'] +
                            request.data["rate"]) / number_of_ratings
        eserializer = EventsSerializer(data=event)
        eserializer.is_valid(raise_exception=True)
        eserializer.save()
        serializer = RatingsSerializer(rating, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(status=status.HTTP_200_OK)
Ejemplo n.º 4
0
 def create(self, request):
     serializer = EventsSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def save_matrix(event_id, matrix):
    event = Events.objects.get(_id=event_id)
    data = {"seats": matrix_to_string(matrix)}
    serializer = EventsSerializer(event, data=data, partial=True)
    serializer.is_valid(raise_exception=True)
    serializer.save()
 def post(request):
     request.data['seats'] = matrix_to_string(create_matrix(request.data["id_room"]))
     serializer = EventsSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(data=serializer.data, status=status.HTTP_201_CREATED)