Esempio n. 1
0
    def put(self, request):

        request_data = request.data.dict()

        circle_id = request_data.get('circle_id', None)
        if circle_id and isinstance(circle_id, str):
            circle_id = circle_id.split(',')
            request_data['circle_id'] = circle_id

        serializer = CreatePostSerializer(data=request_data,
                                          context={"request": request})
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data
        text = data.get('text')
        image = data.get('image')
        video = data.get(
            'video') if settings.FEATURE_VIDEO_POSTS_ENABLED else None
        circles_ids = data.get('circle_id')
        user = request.user

        with transaction.atomic():
            if circles_ids:
                post = user.create_encircled_post(text=text,
                                                  circles_ids=circles_ids,
                                                  image=image,
                                                  video=video)
            else:
                post = user.create_public_post(text=text,
                                               image=image,
                                               video=video)

        post_serializer = AuthenticatedUserPostSerializer(
            post, context={"request": request})

        return Response(post_serializer.data, status=status.HTTP_201_CREATED)
Esempio n. 2
0
    def put(self, request):

        request_data = request.data.dict()

        normalize_list_value_in_request_data('circle_id', request_data)

        serializer = CreatePostSerializer(data=request_data,
                                          context={"request": request})
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data
        text = data.get('text')
        image = data.get('image')
        video = data.get('video')
        circles_ids = data.get('circle_id')
        is_draft = data.get('is_draft')
        user = request.user

        with transaction.atomic():
            if circles_ids:
                post = user.create_encircled_post(text=text,
                                                  circles_ids=circles_ids,
                                                  image=image,
                                                  video=video,
                                                  is_draft=is_draft)
            else:
                post = user.create_public_post(text=text,
                                               image=image,
                                               video=video,
                                               is_draft=is_draft)

        post_serializer = AuthenticatedUserPostSerializer(
            post, context={"request": request})

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