def get(self, request): notifications = request.user.notifications.all().order_by('-date') data = get_paginated_data(data=NotificationSerializer(notifications, many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url="/social/notifications/?") return JsonResponse(data)
def get(self, request): followings = list(request.user.profile.followings.all().values_list( 'user', flat=True)) followings.append(request.user.pk) posts = Post.objects.filter(user_id__in=followings).order_by('-date') data = get_paginated_data(data=PostSerializer(posts, many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url="/social/home/?") return JsonResponse(data)
def get(self, request): search = request.query_params.get('search') if search: data = get_paginated_data(data=TagSerializer( Tag.objects.filter(name__contains=search).annotate( posts_count=Count('posts')).order_by( '-posts_count').exclude(posts__isnull=True), many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/tags/?search={search}") else: data = get_paginated_data(data=TagSerializer( Tag.objects.all().annotate(posts_count=Count('posts')). order_by('-posts_count').exclude(posts__isnull=True), many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/tags/?") return JsonResponse(data)
def get(self, request, post_id): try: post = Post.objects.get(pk=post_id) data = get_paginated_data( data=CommentSerializer(post.comments.all(), many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/posts/{post_id}/comments/?") return JsonResponse(data) except ObjectDoesNotExist: print("status: 400", error_data(post="NotExist")) return JsonResponse(error_data(post="NotExist"), status=400)
def get(self, request): tag = request.query_params.get("tag") if tag: users = list(Post.objects.all().filter( user__profile__is_private=False).values_list('user', flat=True)) users += list(request.user.profile.followings.all().values_list( 'user', flat=True)) users.append(request.user.pk) data = get_paginated_data(data=PostSerializer( Post.objects.filter(tags__name=tag, user_id__in=set(users)).order_by('-date'), many=True, requester=request.user).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/posts/?tag={tag}") return JsonResponse(data) user = get_user(request) if user: if not has_permission(request.user, user): print("status: 400", error_data(profile="Private")) return JsonResponse(error_data(profile="Private"), status=400) data = get_paginated_data( data=PostSerializer( Post.objects.filter(user_id=user.pk).order_by('-date'), many=True, requester=request.user).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/posts/?username={user.username}") return JsonResponse(data) else: print("status: 400", error_data(profile="NotExist")) return JsonResponse(error_data(profile="NotExist"), status=400)
def get(self, request): user = get_user(request) if user: if not has_permission(request.user, user): print("status: 400", error_data(profile="Private")) return JsonResponse(error_data(profile="Private"), status=400) data = get_paginated_data( data=BoardSerializer(user.boards.all().order_by('-id'), requester=request.user, many=True).data, page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/boards/?username={user.username}") return JsonResponse(data) else: print("status: 400", error_data(profile="NotExist")) return JsonResponse(error_data(profile="NotExist"), status=400)
def get(self, request, board_id): try: if not has_permission(request.user, Board.objects.get(pk=board_id).user): print("status: 400", error_data(profile="Private")) return JsonResponse(error_data(profile="Private"), status=400) board = BoardSerializer(Board.objects.get(pk=board_id), requester=request.user).data data = get_paginated_data(data=board['posts'], page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/boards/{board_id}/?") data.update({ "id": board['id'], "name": board['name'], "posts_count": len(data['data']), }) return JsonResponse(data) except Exception as e: print("status: 400", error_data(board="NotExist")) return JsonResponse(error_data(board="NotExist"), status=400)
def put(self, request, board_id): try: board = Board.objects.get(pk=board_id, user=request.user) name = request.data.get('name') add_posts = request.data.get('add_posts') remove_posts = request.data.get('remove_posts') if name: board.name = name if add_posts: for post in add_posts: try: board.posts.add(post) except Exception as e: pass if remove_posts: for post in remove_posts: try: board.posts.remove(post) except Exception as e: pass board.save() board = BoardSerializer(board, requester=request.user).data data = get_paginated_data(data=board['posts'], page=request.query_params.get('page'), limit=request.query_params.get('limit'), url=F"/social/boards/{board_id}/?") data.update({ "id": board['id'], "name": board['name'], "posts_count": len(data['data']), }) return JsonResponse(data) except Exception as e: print("status: 400", error_data(board="NotExist")) return JsonResponse(error_data(board="NotExist"), status=400)