예제 #1
0
    def post(self, request, image_id, format=None):

        user = request.user

        try:
            found_image = models.Image.objects.get(id=image_id)
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        try:
            preexisiting_like = models.Like.objects.get(creator=user,
                                                        image=found_image)
            return Response(status=status.HTTP_304_NOT_MODIFIED)

        except models.Like.DoesNotExist:

            new_like = models.Like.objects.create(creator=user,
                                                  image=found_image)

            new_like.save()

            notification_views.create_notification(user, found_image.creator,
                                                   'like', found_image)

            return Response(status=status.HTTP_201_CREATED)
예제 #2
0
파일: views.py 프로젝트: kwonsye/nomadgram
    def post(self, request, user_id, format=None):
        """request.user 가 user_id의 사용자를 팔로우한다. """

        user = request.user
        try:
            user_to_follow = models.User.objects.get(id=user_id)
        except models.User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        user_followings_set = user.followings.all()

        # 기존에 follow 하지 않은 사용자라면 팔로우한다.
        try:
            preexited_following = user_followings_set.get(id=user_id)

            return Response(status=status.HTTP_304_NOT_MODIFIED)

        except models.User.DoesNotExist:
            user.followings.add(user_to_follow)
            user.save()

            # create noti
            notification_views.create_notification(user, user_to_follow,
                                                   'follow')

            return Response(status=status.HTTP_200_OK)
예제 #3
0
    def post(self, request, image_id, format=None):

        user = request.user

        try:
            found_image = models.Image.objects.get(id=image_id)
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        serializer = serializers.CommentSerializer(data=request.data)

        if serializer.is_valid():

            serializer.save(creator=user, image=found_image)

            notification_views.create_notification(user, found_image.creator,
                                                   'comment', found_image,
                                                   serializer.data['message'])

            return Response(data=serializer.data,
                            status=status.HTTP_201_CREATED)

        else:

            return Response(data=serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
예제 #4
0
파일: views.py 프로젝트: babamba/pythonGram
    def post(self, request, image_id, format=None):
        # 해당 views 호출한 요청자 아이디 변수 할당
        user = request.user

        # 요청에 같이 넘어온 request의 image_id값으로 이미지 모델의 해당 아이디에 해당하는 이미지있는지 try 있으면 try / catch 빠져나감
        try:
            found_image = models.Image.objects.get(id=image_id)
        # try가 실패시 404 처리
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # request data 를 json 형식에서  ~ python 형태로 시리얼라이즈
        serializer = serializers.CommentSerializer(data=request.data)

        # 시리얼라이즈가 처리되었을때 db에 creator 컬럼에 요청 user아이디값 넣어주고 insert 처리
        if serializer.is_valid():
            serializer.save(creator=user, image=found_image)

            notification_views.create_notification(user, found_image.creator,
                                                   'comment', found_image,
                                                   serializer.data['message'])

            return Response(data=serializer.data,
                            status=status.HTTP_201_CREATED)

        # 실패시 400 처리
        else:
            return Response(data=serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
예제 #5
0
    def post(self, request, image_id, format=None):

        user = request.user
        #login한 유저 정보

        try:
            found_image = models.Image.objects.get(id=image_id)
            #여기의 image_id는 /images/2/comment 의 2에 해당
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        #{"message":"Hello"}
        print(request.data)
        serializer = serializers.CommentSerializer(data=request.data)
        #{"message":"Hello"}(request.data)과 같은 필드를 갖고 있는 새로운 오브젝트를 생성

        if serializer.is_valid():

            print('im valid')
            serializer.save(creator=user, image=found_image)

            #comment시 notification추가
            notification_views.create_notification(user, found_image.creator,
                                                   'comment', found_image,
                                                   serializer.data['message'])

            return Response(data=serializer.data,
                            status=status.HTTP_201_CREATED)
        else:
            # {"message":"Hello"}일 경우 "creator": [ "This field is required." 에러가나오게 됨(creator가 없으므로)
            return Response(data=serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
예제 #6
0
    def post(self, request, image_id, format=None):         
        # if something changes on the DataBase, the request should be post
        user = request.user

        try :
            found_image = models.Image.objects.get(id=image_id)   
            # 필터링해서 model을 읽고자 할 때 objects 사용
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        try:
            models.Like.objects.get(
                creator = user,
                image = found_image
            )
            return Response(status=status.HTTP_304_NOT_MODIFIED)

        except models.Like.DoesNotExist:
            new_like = models.Like.objects.create(
                creator = user,
                image = found_image
            )   
            new_like.save()
            notification_views.create_notification(
               user, found_image.creator, 'like', found_image)

            return Response(status=status.HTTP_201_CREATED)
예제 #7
0
파일: views.py 프로젝트: kwonsye/nomadgram
    def post(self,request, image_id, format=None):
        """image_id 의 image에 좋아요를 누른다"""

        try:
            found_image = models.Image.objects.get(id=image_id)
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        try:
            # 이미 좋아요를 눌렀는지 확인
            preexisted_like = models.Like.objects.get(
                creator=request.user,
                image=found_image
            )

            return Response(status=status.HTTP_304_NOT_MODIFIED)

        except models.Like.DoesNotExist:
            # 이전에 누른 좋아요가 없다면 좋아요 생성
            new_like = models.Like.objects.create(
                creator=request.user,
                image=found_image
            )
            new_like.save()
        
            # create noti
            notification_views.create_notification(request.user, found_image.creator, 'like', found_image)

            return Response(status=status.HTTP_201_CREATED)
예제 #8
0
    def post(self, request, user_id, format=None):
        user = request.user
        try:
            user_to_follow = models.User.objects.get(id=user_id)
        except models.User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
        user.following.add(user_to_follow)
        user.save()

        notification_views.create_notification(user, user_to_follow, 'follow')

        return Response(status=status.HTTP_200_OK)
예제 #9
0
    def post(self, request, user_id, format=None):

        user = request.user

        # follow notification

        try:
            user_to_follow = models.User.objects.get(id=user_id)

        except models.User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        user.following.add(user_to_follow)

        user.save()

        notification_views.create_notification(user, user_to_follow, 'follow')

        return Response(status=status.HTTP_200_OK)
예제 #10
0
    def post(self, request, user_id, format=None):

        user = request.user

        try:
            user_to_follow = models.User.objects.get(id=user_id)

        except models.User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # ManyToMany(다대다) 관계에서 객체를 추가
        user.following.add(user_to_follow)

        # 대상의 follower에 해당 유저 추가
        user_to_follow.followers.add(user)

        # 팔로잉 상태창 위한 함수
        notification_views.create_notification(user, user_to_follow, 'follow')

        return Response(status=status.HTTP_200_OK)
예제 #11
0
    def post(self, request, image_id, format=None):
        #원래는 post하는게 맞는데 body에 뭘 넘기고 하는건 아니고 테스트하기 쉬우므로 get을 이용
        #post 바디에게 메시지를 보내서 db에 생성

        user = request.user

        #http://192.168.0.17:8000/images/18/like/
        #에 억세스하면 print에 18이라는게 뜸
        print(image_id)

        try:

            found_image = models.Image.objects.get(id=image_id)
            #get대신에 fileter혹은 all이 될 수 도있음
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        try:
            #http://192.168.0.17:8000/images/2/like/
            #해당 모델에 라이크가 있으면 그 라이크를 삭제하고
            preexsiting_like = models.Like.objects.get(creator=user,
                                                       image=found_image)
            #preexsiting_like.delete()

            return Response(status=status.HTTP_304_NOT_MODIFIED)

        except models.Like.DoesNotExist:
            #http://192.168.0.17:8000/images/2/like/
            #해당 모델의 라이크가 없으면 생성한다.
            new_like = models.Like.objects.create(creator=request.user,
                                                  image=found_image)

            #좋아요시 notification추가
            notification_views.create_notification(user, found_image.creator,
                                                   'like', found_image)

            new_like.save()
            #http://192.168.0.17:8000/images/2/like/ 에 들어가면 현재유저이름으로 좋아요 1건이 추가됨
            #http://192.168.0.17:8000/admin/images/like/ 을 새로고침하면 추가되는걸 확인가능

            return Response(status=status.HTTP_201_CREATED)
예제 #12
0
파일: views.py 프로젝트: kwonsye/nomadgram
    def post(self,request,image_id,format=None):
        """image_id의 이미지에 댓글을 생성한다."""
        try:
            found_image = models.Image.objects.get(id=image_id)
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # request.data 로 {"message" : "hi"} 들어옴
        serializer = serializers.CommentSerializer(data=request.data) # 파이썬 object로 serialize

        if serializer.is_valid():

            serializer.save(creator=request.user, image=found_image) # read only필드인 creator 채우고, Comment 모델의 image 필드 채우고 저장
            
            # create noti
            notification_views.create_notification(
                request.user, found_image.creator, 'comment', found_image, serializer.data['message']) # request.data['message']도 가능

            return Response(data=serializer.data, status=status.HTTP_201_CREATED)
        else:

            return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #13
0
    def post(self, request, image_id, format=None):

        user = request.user

        try:
            found_image = models.Image.objects.get(id=image_id)
        except models.Image.DoesNotExist:
            return Response(status=404)

        try:
            preexisiting_like = models.Like.objects.get(creator=user,
                                                        image=found_image)
            return Response(status=304)

        except models.Like.DoesNotExist:
            new_like = models.Like.objects.create(creator=user,
                                                  image=found_image)
            new_like.save()

            return Response(status=201)

        notification_views.create_notification(user, found_image.creator,
                                               'like', found_image, None)
        return Response(status=200)
예제 #14
0
파일: views.py 프로젝트: babamba/pythonGram
    def post(self, request, image_id, format=None):
        # 해당 views 호출한 요청자 아이디 변수 할당
        user = request.user

        # 요청에 같이 넘어온 request의 image_id값으로 이미지 모델의 해당 아이디에 해당하는 이미지있는지 try 있으면 try / catch 빠져나감
        try:
            found_image = models.Image.objects.get(id=image_id)

        # except처리되는 순간 밑에 있는 구문 실행 안함
        except models.Image.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
        # 위에서 try가 실행되었을때 해당 object가 검색되었으면 delete 처리
        try:
            preexisting_like = models.Like.objects.get(creator=user,
                                                       image=found_image)
            print("exist_like & delete - name : ", user, " / image : ",
                  found_image)

            # 이전에 좋아요한 오브젝트 발견하면 수정하지않음
            return Response(status=status.HTTP_304_NOT_MODIFIED)
        # 위에서 try가 실행되고 try가 실패했을때 save 처리
        except models.Like.DoesNotExist:
            print(found_image)

            new_like = models.Like.objects.create(creator=user,
                                                  image=found_image)

            print("new_like & save - name : ", user, " / image : ",
                  found_image)
            # 이전에 좋아요 하지않음 오브젝트 발견하면 수정
            new_like.save()

            notification_views.create_notification(user, found_image.creator,
                                                   'like', found_image)

        return Response(status=status.HTTP_201_CREATED)