Esempio n. 1
0
    def post(self, request):
        data = request.data
        user = request.user
        post_id = data.get('post_id', None)
        if post_id:
            try:
                post = Post.active_posts.get(id=post_id)
            except:
                return Response({'message': 'Invalid post id'}, 400)
            serializer = CreateTextPostSerializer(data=data,
                                                  instance=post,
                                                  context={'request': request})
            if serializer.is_valid():
                serializer.save(created_by=user, post_type="1")
                return Response({'message': 'Post updated successfully'}, 200)

            return Response({'message': get_error(serializer)}, 400)
        else:
            serializer = CreateTextPostSerializer(data=data,
                                                  context={'request': request})
            if serializer.is_valid():
                serializer.save(created_by=user, post_type="1")
                # update post count and last post created for user
                update_user_data(user)
                return Response({'message': 'Post created successfully'}, 200)

            return Response({'message': get_error(serializer)}, 400)
Esempio n. 2
0
    def post(self, request):
        data = request.data
        user = request.user
        media_file = request.FILES.get('media_files', None)
        video_thumbnail = request.FILES.get('thumbnail', None)
        post_id = data.get('post_id', None)
        if post_id:
            try:
                post = Post.active_posts.get(id=post_id)
            except:
                return Response({'message': 'Invalid post id'}, 400)
            serializer = CreateVideoAudioPostSerializer(
                data=data, instance=post, context={'request': request})
            if serializer.is_valid():
                obj = serializer.save()
                if media_file:
                    # check for video thumbnail
                    if not video_thumbnail and data.get("post_type") == '3':
                        return Response(
                            {
                                'message':
                                'Please provide thumbnail of media file'
                            }, 400)
                    # delete previous media file
                    PostMediaFiles.objects.get(post_id=post_id).delete()
                    # upload latest media file
                    PostMediaFiles.objects.create(file=media_file, post_id=obj)

                return Response({'message': 'Post updated successfully'}, 200)

            return Response({'message': get_error(serializer)}, 400)
        else:

            serializer = CreateVideoAudioPostSerializer(
                data=data, context={'request': request})
            if serializer.is_valid():
                if not media_file:
                    return Response({'message': 'Please provide  media file'},
                                    400)
                if not video_thumbnail and data.get("post_type") == '3':
                    return Response(
                        {'message': 'Please provide thumbnail of media file'},
                        400)
                obj = serializer.save(created_by=user,
                                      post_type=data.get("post_type"))
                PostMediaFiles.objects.create(file=media_file,
                                              post_id=obj,
                                              thumbnail=video_thumbnail)

                update_user_data(user)
                return Response({'message': 'Post created successfully'}, 200)

            return Response({'message': get_error(serializer)}, 400)
Esempio n. 3
0
    def post(self, request):
        serializer = VoteAPollSerializer(data=request.data,
                                         context={'request': request})
        if serializer.is_valid():

            try:
                post_obj = Post.objects.get(id=request.data['post_id'])
                if post_obj.is_shared_post:
                    post_obj = post_obj.parent_main_post_id
            except:
                return Response({'message': 'Invalid post id'}, 400)
            try:
                poll_option = PollOptions.objects.get(
                    post=post_obj, id=request.data['poll_option_id'])
            except:
                return Response({'message': 'invalid option id'}, 400)
            #  check poll end
            poll_post_obj = PollPost.objects.get(post=post_obj)
            if poll_post_obj.poll_end_date < timezone.now():
                raise ValidationError(
                    {'message': 'Sorry Poll has already end'})

            # check voted or not
            try:
                vote_poll_obj = VoteAPoll.objects.get(created_by=request.user,
                                                      post=post_obj)

                vote_poll_obj.poll_option = poll_option
                vote_poll_obj.save()
                message = 'Your vote Changed successfully'
            except:
                VoteAPoll.objects.create(created_by=request.user,
                                         post=post_obj,
                                         poll_option=poll_option)
                message = 'Your vote submitted successfully'

            # send new data

            poll_option_ids = PollOptions.objects.filter(
                post=post_obj).values_list('id', flat=True)
            votes = VoteAPoll.objects.filter(post=post_obj).values_list(
                'poll_option', flat=True)
            votes_count = Counter(votes)
            data = []
            for id in poll_option_ids:
                per_data = {}
                if votes_count.get(id, None):
                    per_data['option_id'] = id
                    per_data['new_percentage'] = (votes_count[id] /
                                                  votes.count()) * 100
                    data.append(per_data)
                    continue
                per_data['option_id'] = id
                per_data['new_percentage'] = 0
                data.append(per_data)
            new_data = {'total_votes': votes.count(), 'new_poll_data': data}
            return Response({'message': message, 'data': new_data}, 200)
        return Response({'message': get_error(serializer)}, 400)
Esempio n. 4
0
    def post(self, request):
        data = request.data
        user = request.user
        post_id = data.get('post_id', None)
        images = request.FILES.getlist('images', [])
        if post_id:
            try:
                post = Post.active_posts.get(id=post_id)
            except:
                return Response({'message': 'Invalid post id'}, 400)
            serializer = CreateImagePostSerializer(
                data=data, instance=post, context={'request': request})
            if serializer.is_valid():
                # check image at least one image is associated with this post
                image_qs = PostMediaFiles.objects.filter(post_id=post_id)
                if not image_qs.exists() and images == []:
                    return Response({
                        'message':
                        'There are no image in this post please select at least one image'
                    })
                obj = serializer.save()
                for image in images:
                    PostMediaFiles.objects.create(file=image, post_id=obj)
                return Response({'message': 'Post updated successfully'}, 200)

                return Response({'message': get_error(serilizer)}, 400)

        else:
            serilizer = CreateImagePostSerializer(data=data,
                                                  context={'request': request})
            if serilizer.is_valid():
                if len(images) == 0:
                    return Response(
                        {'message': 'Please provide at least one image'}, 400)
                obj = serilizer.save(created_by=user, post_type="2")
                for image in images:
                    PostMediaFiles.objects.create(file=image, post_id=obj)
                update_user_data(user)
                return Response({'message': 'Post created successfully'}, 200)

            return Response({'message': get_error(serilizer)}, 400)
Esempio n. 5
0
    def post(self, request):
        user = request.user
        data = request.data
        serializer = SendNotificationSerializer(data=data)
        if serializer.is_valid():
            user_id = data.get('sendTo')
            try:
                send_to_user = User.objects.get(id=user_id)
            except:
                return Response({'message': 'invalid user id'})
            profile_image = user.profile_image
            device_type = send_to_user.device_type
            notificationType = data.get('notificationType')
            if profile_image:
                profile_image = profile_image.url
            else:
                profile_image = ''
            data = {
                'sendBy': user.id,
                'sendTo': send_to_user.id,
                'message': data.get('message'),
                'title': data.get('title'),
                'fullName': user.first_name + ' ' + user.last_name,
                'profilePic': profile_image,
                'call_status': '',
                'call_id': data.get('call_id'),
                'body': "viewed",
                'notificationType': notificationType
            }
            # result = send_single_notification(send_to_user.device_token, device_type, data)
            result = send_notification_by_url(send_to_user.device_token,
                                              notificationType, device_type,
                                              data)
            if result.status_code == 200:
                return Response(
                    {
                        'message': "sent successfully",
                        'result': 200,
                        'data': data
                    }, 200)
            else:
                return Response(
                    {
                        'message': "Somthing went wrong",
                        'result': result.status_code
                    }, 500)

        return Response({'message': get_error(serializer)}, 400)
Esempio n. 6
0
    def post(self, request):

        serializer = SaveAddressForPrizeSerilizer(data=request.data)
        if serializer.is_valid():
            try:
                post = Post.active_posts.get(id=request.data.get('post_id'),
                                             post_type='6')
            except:
                raise ValidationError({'message': 'invalid post id'})

            serializer.save(post=post, user=request.user)
            # send notification to competition creator

            return Response({'message': 'saved successfully'}, 200)

        return Response({'message': get_error(serializer)}, 400)
Esempio n. 7
0
    def post(self, request):
        serializer = CommentSerializer(data=request.data)
        if serializer.is_valid():
            try:
                post = Post.objects.get(id=request.data['post_id'])
            except:
                raise ValidationError({'message': 'Invalid post id'})

            content = serializer.validated_data['content']
            serializer.save(comment_by=request.user, post_id=post)
            post.total_comments = F('total_comments') + 1
            post.save()

            if request.user != post.created_by:
                send_action_notification(4, post.id, request.user.id)

            return Response({'message': 'Commented successfully'}, 200)
        return Response({'message': get_error(serializer)}, 400)
Esempio n. 8
0
    def post(self, request):
        serializer = ReportACommentSerilizer(data=request.data)
        if serializer.is_valid():
            try:
                post = Post.objects.get(
                    id=serializer.validated_data['post_id'])
            except:
                raise ValidationError({'message': 'Invalid post id'})
            else:
                obj, created = ReportAPost.objects.get_or_create(
                    post=post, user=request.user)

                obj.text = serializer.validated_data['text']
                obj.option = serializer.validated_data['option']
                obj.save()

                return Response({'message': 'Reported successfully'}, 200)

        raise ValidationError({'message': get_error(serializer)})
Esempio n. 9
0
    def post(self, request):
        serializer = LikeCommentSerilizer(data=request.data)

        if serializer.is_valid():
            try:
                comment = Comments.objects.get(
                    id=serializer.validated_data['comment_id'])
            except:
                raise ValidationError({'message': 'Invalid comment_id'})
            else:
                if not serializer.validated_data['is_liked']:
                    try:
                        comment_likes = CommentLike.objects.get(
                            comment_id=comment, liked_by=request.user)
                        comment_likes.delete()
                        comment.total_like = F('total_like') - 1
                        comment.save()

                        return Response(
                            {
                                'message': 'Like Removed successfully',
                            }, 200)
                    except:
                        raise ValidationError(
                            {'message': 'first like this post'})

                obj, created = CommentLike.objects.get_or_create(
                    comment_id=comment, liked_by=request.user)

                if created:
                    comment.total_like = F('total_like') + 1
                    comment.save()

                    if request.user != comment.comment_by:
                        send_action_notification(5, comment.post_id.id,
                                                 request.user.id)

                return Response({
                    'message': 'Liked successfully',
                }, 200)

        return Response({'message': get_error(serializer)}, 400)
Esempio n. 10
0
    def post(self, request, *args, **kwargs):
        data = request.data
        serilizer = LikePostSerilizer(data=data)

        if serilizer.is_valid():
            try:
                post = Post.objects.get(id=serilizer.validated_data['post_id'])
            except:
                raise ValidationError({'message': 'Invalid post_id'})
            else:
                if not serilizer.validated_data['is_liked']:
                    try:
                        post_likes = PostLikes.objects.get(
                            post_id=post, liked_by=request.user)
                        post_likes.delete()

                        post.total_likes = F('total_likes') - 1
                        post.save()

                        return Response(
                            {
                                'message': 'Like Removed successfully',
                            }, 200)
                    except:
                        raise ValidationError(
                            {'message': 'first like this post'})

                obj, created = PostLikes.objects.get_or_create(
                    post_id=post, liked_by=request.user)

                if created:
                    post.total_likes = F('total_likes') + 1
                    post.save()

                    # send like notification
                    if request.user != post.created_by:
                        send_action_notification(2, post.id, request.user.id)

                return Response({
                    'message': 'Liked successfully',
                }, 200)
        return Response({'message': get_error(serilizer)}, 400)
Esempio n. 11
0
    def post(self, request):
        data = request.data
        post_id = request.data.get('post_id')
        if post_id:
            # update post code
            return Response({'message': 'Post updated successfully'}, 200)
        else:
            # create new post
            serializer = CreateCompetitionSerializer(
                data=data, context={'request': request})
            if serializer.is_valid():

                serializer.save()

                # update post count and last post created for user
                update_user_data(request.user)
                return Response({'message': 'Post created successfully'}, 200)

            # return Response({'message': serializer.errors}, 400)
            return Response({'message': get_error(serializer)}, 400)
Esempio n. 12
0
    def post(self, request):
        data = request.data

        serializer = PrizeReceivingStatusSerializer(data=data)
        if serializer.is_valid():
            try:
                post = Post.objects.get(
                    id=serializer.validated_data['post_id'], post_type='6')
            except:
                raise ValidationError({'message': 'Invalid post id'})

            comp_winner = CompetitionWinners.objects.filter(
                post=post, winners=request.user)
            if not comp_winner.exists():
                raise ValidationError(
                    {'message': 'You are not winner of this competition'})

            obj, created = CompetitionWinnersPrizeDeliveryStatus.objects.get_or_create(
                post=post, user=request.user)

            if created:
                if serializer.validated_data['is_prize_received']:
                    obj.is_price_received = True
                else:
                    obj.is_price_received = False

                obj.save()

                return Response({'message': 'saved successfully'}, 200)

            else:
                if not obj.is_price_received:
                    return Response(
                        {'message': 'We have already received your Complaint'},
                        400)
                return Response(
                    {'message': 'You have already received your prize'}, 400)

        return Response({'message': get_error(serializer)}, 400)
Esempio n. 13
0
    def post(self, request):

        data = request.data
        logger.debug(data)
        post_id = data.get('post_id', None)
        image_options = request.FILES.getlist('image_options', [])
        text_options = data.getlist('text_options', [])
        if len(image_options) == 0 and len(text_options) < 2:
            return Response({'message': 'Please provide at least two options'},
                            400)
        if int(data['poll_end_value']) < 1:
            raise ValidationError(
                {'message': 'Poll end time should be greater than Zero'})
        if post_id:  # for update of post
            # try:
            #     post = Post.active_posts.get(id=post_id)
            # except:
            #     return Response({
            #         'message': 'Invalid post id'
            #     }, 400)
            # serializer = CreatePollPostSerializer(data=data, context={'request': request})
            # if serializer.is_valid():
            #
            #     if len(image_options) == 0 and len(text_options)==0:
            #         return Response({
            #             'message': 'Please provide  image option or text option'
            #         }, 400)
            #     post_obj = Post.objects.create(created_by=request.user, post_type='5', about=data['about'],
            #                         description=data['description'], is_18_plus=serilizer.data['is_18_plus'])
            #
            #
            #     poll_obj = PollPost.objects.create(post=post_obj, ques=data['ques'], poll_end_value=data['poll_end_value'],
            #                             poll_end_type=data['poll_end_type'])
            #
            #     ## save options
            #     if len(image_options) >0:
            #         for option in image_options:
            #             PollOptions.objects.create(image_option=option, post=poll_obj)
            #     else:
            #         for option in text_options:
            #             PollOptions.objects.create(text_option=option, post=poll_obj)
            #             poll_obj.option_type = '2'
            #             poll_obj.save()

            return Response({'message': 'Post updated successfully'}, 200)

            return Response({'message': get_error(serilizer)}, 400)
        else:
            serilizer = CreatePollPostSerializer(data=data,
                                                 context={'request': request})
            if serilizer.is_valid():

                if len(image_options) == 0 and len(
                        text_options) == 0 and text_options == ['']:
                    return Response(
                        {
                            'message':
                            'Please provide  image option or text option',
                            'data': serilizer.data
                        }, 400)
                post_obj = Post.objects.create(
                    created_by=request.user,
                    post_type='5',
                    about=data['about'],
                    description=data['description'],
                    is_18_plus=serilizer.data['is_18_plus'])

                calculate_date = calculate_date_time(
                    int(data['poll_end_value']), data['poll_end_type'])
                poll_obj = PollPost.objects.create(
                    post=post_obj,
                    ques=data['ques'],
                    poll_end_value=data['poll_end_value'],
                    poll_end_type=data['poll_end_type'],
                    poll_end_date=calculate_date)

                ## save options
                if len(image_options) > 0:
                    for option in image_options:
                        PollOptions.objects.create(image_option=option,
                                                   post=post_obj)
                else:
                    for option in text_options:
                        PollOptions.objects.create(text_option=option,
                                                   post=post_obj)
                        poll_obj.option_type = '2'
                        poll_obj.save()
                # update post count and last post created for user
                update_user_data(request.user)
                return Response({'message': 'Post created successfully'}, 200)

            return Response(
                {
                    'message': get_error(serilizer),
                    'data': serilizer.data
                }, 400)