예제 #1
0
def review_create(request):
    if request.method == 'GET':
        review = models.Review.objects.all()
        serializer = serializers.ReviewSerializer(review, many=True)
        return Response(serializer.data)
    else:
        serializer = serializers.ReviewSerializer(data=request.data)
        book = models.Book.objects.get(id=request.data['book'])
        print(book)
        book.r_score += int(request.data['score'])
        book.r_cnt += 1
        book.save()
        if serializer.is_valid(raise_exception=True):
            serializer.save()
        return Response(serializer.data)
예제 #2
0
 def get(self, request, pk):
     review = self.get_object(pk)
     if review != -1:
         serializer = serializers.ReviewSerializer(review)
         review = serializer.data
         review["nickname"] = get_object_or_404(models.User,
                                                id=review["user"]).nickname
         return Response(review, status=status.HTTP_200_OK)
     else:
         result = {"result": -1}
         return Response(result, status=status.HTTP_204_NO_CONTENT)
예제 #3
0
 def put(self, request, pk):
     review = self.get_object(pk)
     serializer = serializers.ReviewSerializer(review, data=request.data)
     if review != -1:
         if serializer.is_valid():
             serializer.save()
             print("수정성공")
             result = {'result': True}
             return Response(result, status=status.HTTP_202_ACCEPTED)
         else:
             result = {"result": False}
             return Response(result, status=status.HTTP_400_BAD_REQUEST)
     else:
         Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #4
0
    def create(self, request, *args, **kwargs):
        title = get_object_or_404(models.Title, id=self.kwargs.get("title_id"))

        if (models.Review.objects.filter(author=request.user,
                                         title=title).all().count() != 0):
            return Response({}, status=status.HTTP_400_BAD_REQUEST)
        serializer = serializers.ReviewSerializer(data=request.data)

        if serializer.is_valid():
            if not (1 <= serializer.validated_data["score"] <= 10):
                return Response({}, status=status.HTTP_400_BAD_REQUEST)
            serializer.save(author=request.user, title=title)
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #5
0
    def post(self, request, *args, **kwargs):
        received_data = request.data
        print(received_data)
        review_dict = {
            "id": None,
            "store": received_data.get("store"),
            "user": received_data.get("user"),
            "score": received_data.get("score"),
            "content": received_data.get("content"),
            "reg_time": datetime.datetime.now(),
            "taste": received_data.get("taste"),
            "service": received_data.get("service"),
            "price_satisfaction": received_data.get("price_satisfaction"),
            "interior": received_data.get("interior")
        }

        review_serializer = serializers.ReviewSerializer(data=review_dict)
        if review_serializer.is_valid():
            saved_id = review_serializer.save().id
            files = received_data.getlist("file")
            print(type(files))
            print(files)
            file_size = len(files)
            if file_size > 0:
                for file in files:
                    review_image_dict = {
                        "id": None,
                        'file': file,
                        'review': saved_id
                    }
                    review_image_serializer = serializers.ReviewImageSerializer(
                        data=review_image_dict)
                    if review_image_serializer.is_valid():
                        review_image_serializer.save()
                    else:
                        print(review_image_serializer.error_messages)

                result = {"saved_review_id": saved_id}
                return Response(result, status=status.HTTP_201_CREATED)
            result = {"saved_review_id": saved_id}
            return Response(result, status=status.HTTP_201_CREATED)
        else:
            print("에러나?")
            print(review_serializer.error_messages)
            return Response(review_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
예제 #6
0
def review_command(request, review_pk):
    if request.method == 'PUT':
        review = get_object_or_404(models.Review, pk=review_pk)
        serializer = serializers.ReviewSerializer(data=request.data,
                                                  instance=review)
        book = models.Book.objects.get(id=review.book_id)
        book.r_score -= review.score - int(request.data['score'])
        book.save()
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            return Response({'message': 'updated competition!!!'})
    else:
        print('delete_review')
        review = get_object_or_404(models.Review, pk=review_pk)
        book = models.Book.objects.get(id=review.book_id)
        book.r_cnt -= 1
        book.r_score -= review.score
        book.save()
        review.delete()
        return Response({'message': 'deleted!!'})