Пример #1
0
    def post(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        data = serializer.validated_data

        username = data.get('username')

        user = request.user

        with transaction.atomic():
            community_invite = user.invite_user_with_username_to_community_with_name(
                username=username, community_name=community_name)

        response_serializer = InviteUserSerializer(
            community_invite.invited_user,
            context={
                "request": request,
                'communities_names': [community_name]
            })

        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 _prepare_request_data_for_validation(request_data):
    request_data_copy = normalise_request_data(request_data)
    lists_ids = request_data_copy.get('lists_ids', None)
    if isinstance(lists_ids, str):
        lists_ids = lists_ids.split(',')
        request_data_copy['lists_ids'] = lists_ids
    return request_data_copy
Пример #4
0
def _prepare_request_data_for_validation(request_data):
    request_data_copy = normalise_request_data(request_data)
    circles_ids = request_data_copy.get('circles_ids', None)
    if isinstance(circles_ids, str):
        circles_ids = circles_ids.split(',')
        request_data_copy['circles_ids'] = circles_ids
    return request_data_copy
Пример #5
0
    def patch(self, request, list_id):
        request_data = normalise_request_data(request.data)
        request_data['list_id'] = list_id
        nomalize_usernames_in_request_data(request_data)

        serializer = UpdateListSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        list_id = data.get('list_id')
        emoji_id = data.get('emoji_id')
        usernames = data.get('usernames')
        name = data.get('name')

        user = request.user

        with transaction.atomic():
            list = user.update_list_with_id(list_id,
                                            emoji_id=emoji_id,
                                            usernames=usernames,
                                            name=name)

        response_serializer = GetListListSerializer(
            list, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #6
0
    def patch(self, request, circle_id):
        request_data = normalise_request_data(request.data)
        request_data['circle_id'] = circle_id
        nomalize_usernames_in_request_data(request_data)

        serializer = UpdateCircleSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        circle_id = data.get('circle_id')
        color = data.get('color')
        usernames = data.get('usernames')
        name = data.get('name')

        user = request.user

        with transaction.atomic():
            circle = user.update_circle_with_id(circle_id,
                                                color=color,
                                                usernames=usernames,
                                                name=name)

        response_serializer = GetCircleCircleSerializer(
            circle, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #7
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)
Пример #8
0
    def delete(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        user = request.user

        with transaction.atomic():
            user.remove_exclusion_for_community_with_name_from_top_posts(community_name)

        return ApiMessageResponse(_('Community exclusion removed'), status=status.HTTP_202_ACCEPTED)
Пример #9
0
    def delete(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        user = request.user

        with transaction.atomic():
            community = user.unfavorite_community_with_name(community_name)

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

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #10
0
    def put(self, request, user_username):
        request_data = normalise_request_data(request.data)
        request_data['username'] = user_username

        serializer = GetUserSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        username = data.get('username')
        user = request.user

        with transaction.atomic():
            user = user.enable_new_post_notifications_for_user_with_username(username=username)

        response_serializer = SubscribeToUserNewPostNotificationsUserSerializer(user, context={"request": request})

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

        serializer = SubscribeToCommunityNotificationsSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        community_name = data.get('community_name')
        user = request.user

        with transaction.atomic():
            community = user.disable_new_post_notifications_for_community_with_name(community_name=community_name)

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

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #12
0
    def post(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        data = serializer.validated_data

        username = data.get('username')

        user = request.user

        with transaction.atomic():
            user.ban_user_with_username_from_community_with_name(
                username=username, community_name=community_name)

        return ApiMessageResponse(_('Banned user!'), status=status.HTTP_200_OK)
Пример #13
0
    def put(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        data = serializer.validated_data

        username = data.get('username')
        user = request.user

        with transaction.atomic():
            user.add_moderator_with_username_to_community_with_name(
                username=username, community_name=community_name)

        return ApiMessageResponse('Added moderator to community.',
                                  status=status.HTTP_201_CREATED)
Пример #14
0
    def put(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        user = request.user

        data = serializer.validated_data
        avatar = data.get('avatar')

        with transaction.atomic():
            community = user.update_community_with_name_avatar(community_name, avatar=avatar)

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

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #15
0
    def post(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

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

        user = request.user

        with transaction.atomic():
            community = user.join_community_with_name(
                community_name=community_name)

        return Response(MembersCommunitySerializer(community,
                                                   context={
                                                       'request': request
                                                   }).data,
                        status=status.HTTP_201_CREATED)
Пример #16
0
    def patch(self, request, invite_id):
        request_data = normalise_request_data(request.data)
        request_data['invite_id'] = invite_id
        serializer = EditUserInviteSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        invite_id = serializer.validated_data.get('invite_id')
        nickname = serializer.validated_data.get('nickname')

        user = request.user

        with transaction.atomic():
            updated_invite = user.update_invite(invite_id=invite_id,
                                                nickname=nickname)

        response_serializer = GetUserInviteSerializer(
            updated_invite, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #17
0
    def patch(self, request, device_uuid):
        request_data = normalise_request_data(request.data)
        request_data['device_uuid'] = device_uuid

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

        data = serializer.validated_data

        name = data.get('name')

        user = request.user

        with transaction.atomic():
            device = user.update_device_with_uuid(device_uuid=device_uuid, name=name)

        response_serializer = GetDevicesDeviceSerializer(device, context={"request": request})

        return Response(response_serializer.data, status=status.HTTP_200_OK)
Пример #18
0
    def delete(self, request, community_name, community_moderator_username):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name
        request_data['username'] = community_moderator_username

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

        data = serializer.validated_data

        username = data.get('username')

        user = request.user

        with transaction.atomic():
            user.remove_moderator_with_username_from_community_with_name(
                username=username, community_name=community_name)

        return ApiMessageResponse(_('Removed moderator'),
                                  status=status.HTTP_200_OK)
Пример #19
0
    def put(self, request, community_name):
        request_data = normalise_request_data(request.data)
        request_data['community_name'] = community_name

        serializer = CreateCommunityPostSerializer(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')
        community_name = data.get('community_name')

        user = request.user

        with transaction.atomic():
            post = user.create_community_post(text=text, community_name=community_name, image=image, video=video)

        post_serializer = CommunityPostSerializer(post, context={"request": request})

        return Response(post_serializer.data, status=status.HTTP_201_CREATED)
Пример #20
0
    def post(self, request, invite_id):
        request_data = normalise_request_data(request.data)
        request_data['invite_id'] = invite_id
        serializer = EmailUserInviteSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        invite_id = serializer.validated_data.get('invite_id')
        email = serializer.validated_data.get('email')

        user = request.user
        with transaction.atomic():
            try:
                user.send_invite_to_invite_id_with_email(invite_id, email)
            except SMTPException as e:
                logger.exception('Exception occurred during send_invite_email',
                                 e)
                raise APIException(
                    _('An error occurred sending the invite, please try again')
                )

        return ApiMessageResponse(_('Invite email sent'),
                                  status=status.HTTP_200_OK)
Пример #21
0
    def put(self, request, post_uuid, post_comment_id):
        request_data = normalise_request_data(request.data)
        request_data.update(request.query_params.dict())
        request_data['post_uuid'] = post_uuid
        request_data['post_comment_id'] = post_comment_id

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

        data = serializer.validated_data
        emoji_id = data.get('emoji_id')

        user = request.user

        with transaction.atomic():
            post_comment_reaction = user.react_to_post_comment_with_id(
                post_comment_id=post_comment_id,
                emoji_id=emoji_id,
            )

        post_reaction_serializer = PostCommentReactionSerializer(
            post_comment_reaction, context={"request": request})
        return Response(post_reaction_serializer.data,
                        status=status.HTTP_201_CREATED)