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)
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)
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)
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)
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)
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)
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)
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)})
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)
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)
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)
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)
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)