Пример #1
0
    def put(self, request):
        request_data = normalise_request_data(request.data)
        normalize_list_value_in_request_data(list_name='categories', request_data=request_data)

        serializer = CreateCommunitySerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        name = data.get('name')
        type = data.get('type')
        title = data.get('title')
        description = data.get('description')
        rules = data.get('rules')
        avatar = data.get('avatar')
        cover = data.get('cover')
        color = data.get('color')
        user_adjective = data.get('user_adjective')
        users_adjective = data.get('users_adjective')
        categories = data.get('categories')
        invites_enabled = data.get('invites_enabled')

        user = request.user

        with transaction.atomic():
            community = user.create_community(name=name, title=title, description=description, rules=rules,
                                              avatar=avatar, cover=cover
                                              , type=type, color=color, categories_names=categories,
                                              users_adjective=users_adjective, user_adjective=user_adjective,
                                              invites_enabled=invites_enabled)

        response_serializer = CommunitiesCommunitySerializer(community, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_201_CREATED)
Пример #2
0
    def patch(self, request, community_name):
        request_data = normalise_request_data(request.data)
        normalize_list_value_in_request_data(list_name='categories', request_data=request_data)
        request_data['community_name'] = community_name

        serializer = UpdateCommunitySerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        name = data.get('name')
        type = data.get('type')
        color = data.get('color')
        title = data.get('title')
        description = data.get('description')
        rules = data.get('rules')
        user_adjective = data.get('user_adjective')
        users_adjective = data.get('users_adjective')
        categories = data.get('categories')
        invites_enabled = data.get('invites_enabled')

        user = request.user

        with transaction.atomic():
            community = user.update_community_with_name(community_name, name=name, type=type, title=title,
                                                        description=description,
                                                        color=color,
                                                        rules=rules, user_adjective=user_adjective,
                                                        users_adjective=users_adjective, categories_names=categories,
                                                        invites_enabled=invites_enabled)

        response_serializer = GetCommunityCommunitySerializer(community, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #3
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)
Пример #4
0
    def get(self, request, community_name):
        query_params = request.query_params.dict()
        query_params['community_name'] = community_name
        normalize_list_value_in_request_data(request_data=query_params,
                                             list_name='exclude')

        serializer = SearchCommunityMembersSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data

        count = data.get('count', 10)
        query = data.get('query')
        exclude = data.get('exclude')

        user = request.user

        members = user.search_community_with_name_members(
            community_name=community_name,
            query=query,
            exclude_keywords=exclude)[:count]

        response_serializer = GetCommunityMembersMemberSerializer(
            members, many=True, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #5
0
    def get(self, request, community_name):
        query_params = request.query_params.dict()
        normalize_list_value_in_request_data(request_data=query_params,
                                             list_name='types')
        normalize_list_value_in_request_data(request_data=query_params,
                                             list_name='statuses')

        query_params['community_name'] = community_name
        serializer = GetCommunityModeratedObjectsSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data

        community_name = data.get('community_name')
        count = data.get('count', 10)
        max_id = data.get('max_id')
        types = data.get('types')
        verified = data.get('verified')
        statuses = data.get('statuses')

        user = request.user

        moderated_objects = user.get_community_moderated_objects(
            community_name=community_name,
            max_id=max_id,
            verified=verified,
            types=types,
            statuses=statuses).order_by('-id')[:count]

        response_serializer = ModeratedObjectSerializer(
            moderated_objects, many=True, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #6
0
    def get(self, request):
        user = request.user
        query_params = request.query_params.dict()

        normalize_list_value_in_request_data('types', query_params)

        serializer = UnreadNotificationsCountSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data

        max_id = data.get('max_id')
        types = data.get('types')

        notifications = user.get_unread_notifications(max_id=max_id, types=types)

        return Response({'count': notifications.count()}, status=status.HTTP_200_OK)
Пример #7
0
    def get_posts_for_authenticated_user(self, request):
        query_params = request.query_params.dict()
        normalize_list_value_in_request_data('circle_id', query_params)
        normalize_list_value_in_request_data('list_id', query_params)

        serializer = GetPostsSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        circles_ids = data.get('circle_id')
        lists_ids = data.get('list_id')
        max_id = data.get('max_id')
        min_id = data.get('min_id')
        count = data.get('count', 10)
        username = data.get('username')

        user = request.user

        if username:
            if username == user.username:
                posts = user.get_posts(max_id=max_id)
            elif not user.is_connected_with_user_with_username(username):
                User = get_user_model()
                posts = User.get_public_posts_for_user_with_username(
                    max_id=max_id, min_id=min_id, username=username)
            else:
                posts = user.get_posts_for_user_with_username(username,
                                                              max_id=max_id)
        else:
            posts = user.get_timeline_posts(circles_ids=circles_ids,
                                            lists_ids=lists_ids,
                                            max_id=max_id,
                                            min_id=min_id,
                                            count=count)

        posts = posts.order_by('-id')[:count]

        post_serializer_data = AuthenticatedUserPostSerializer(posts,
                                                               many=True,
                                                               context={
                                                                   "request":
                                                                   request
                                                               }).data

        return Response(post_serializer_data, status=status.HTTP_200_OK)
Пример #8
0
    def get(self, request):
        user = request.user
        query_params = request.query_params.dict()

        normalize_list_value_in_request_data('types', query_params)

        serializer = GetNotificationsSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data

        count = data.get('count', 10)
        max_id = data.get('max_id')
        types = data.get('types')

        notifications = user.get_notifications(max_id=max_id, types=types).order_by('-created')[:count]

        response_serializer = GetNotificationsNotificationSerializer(notifications, many=True,
                                                                     context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)