Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)