コード例 #1
0
ファイル: views.py プロジェクト: zoist/okuna-api
    def post(self, request, post_uuid, post_comment_id):
        request_data = request.data.copy()
        request_data['post_uuid'] = post_uuid
        request_data['post_comment_id'] = post_comment_id

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

        user = request.user
        data = serializer.validated_data
        post_comment_id = data.get('post_comment_id')

        try:
            post_comment, translated_text = user.translate_post_comment_with_id(
                post_comment_id=post_comment_id)
        except UnsupportedLanguagePairException:
            return ApiMessageResponse(
                _('Translation between these languages is not supported.'),
                status=status.HTTP_400_BAD_REQUEST)
        except TranslationClientError:
            return ApiMessageResponse(
                _('Translation service returned an error'),
                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        except MaxTextLengthExceededError:
            return ApiMessageResponse(
                _('Max length of translation text exceeded.'),
                status=status.HTTP_400_BAD_REQUEST)
        return Response({'translated_text': translated_text},
                        status=status.HTTP_200_OK)
コード例 #2
0
    def get(self, request, post_uuid):
        request_data = request.data.copy()
        request_data['post_uuid'] = post_uuid

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

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

        user = request.user
        post_id = get_post_id_for_post_uuid(post_uuid)
        try:
            preview_link_data = user.get_preview_link_data_for_post_with_id(
                post_id)
        except URLNotFound:
            return ApiMessageResponse(
                _('The linked url associated for preview was not found.'),
                status=status.HTTP_400_BAD_REQUEST)
        except URLUnreachable:
            return ApiMessageResponse(
                _('The linked url associated for preview was not reachable.'),
                status=status.HTTP_400_BAD_REQUEST)

        return Response(preview_link_data, status=status.HTTP_200_OK)
コード例 #3
0
ファイル: views.py プロジェクト: zoist/okuna-api
    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)
        name = serializer.validated_data.get('name')

        user = request.user

        if not user.has_circle_with_name(name):
            return ApiMessageResponse(_('Circle name available'), status=status.HTTP_202_ACCEPTED)

        return ApiMessageResponse(_('Circle name not available'), status=status.HTTP_400_BAD_REQUEST)
コード例 #4
0
    def post(self, request):
        request_data = request.data
        serializer = RequestPasswordResetSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        has_username = '******' in data
        has_email = 'email' in data

        if not has_email and not has_username:
            return Response('At least one of email or username is required',
                            status=status.HTTP_400_BAD_REQUEST)

        User = get_user_model()
        user = None
        if has_username:
            username = data.get('username')
            user = User.get_user_with_username(username)

        if has_email:
            email = data.get('email')
            user = User.get_user_with_email(email)

        with transaction.atomic():
            user.request_password_reset()

        return ApiMessageResponse(
            _('A password reset link was sent to the email'),
            status=status.HTTP_200_OK)
コード例 #5
0
    def post(self, request):
        user = request.user

        with transaction.atomic():
            user.accept_guidelines()

        return ApiMessageResponse(_('Guidelines successfully accepted'), status=status.HTTP_200_OK)
コード例 #6
0
ファイル: views.py プロジェクト: mhadaily/okuna-api
    def post(self, request, post_uuid, post_comment_id):
        request_data = request.data.copy()
        request_data['post_comment_id'] = post_comment_id
        request_data['post_uuid'] = post_uuid

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

        data = serializer.validated_data

        post_uuid = data.get('post_uuid')
        post_comment_id = data.get('post_comment_id')
        description = data.get('description')
        category_id = data.get('category_id')

        user = request.user

        with transaction.atomic():
            user.report_comment_with_id_for_post_with_uuid(
                post_comment_id=post_comment_id,
                post_uuid=post_uuid,
                category_id=category_id,
                description=description)

        return ApiMessageResponse(_('Post comment reported, thanks!'),
                                  status=status.HTTP_201_CREATED)
コード例 #7
0
    def post(self, request):
        # Serializer contains validators
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)

        return ApiMessageResponse(_('Community name available'),
                                  status=status.HTTP_202_ACCEPTED)
コード例 #8
0
    def get(self, request):
        query_params = request.query_params.dict()
        serializer = PreviewLinkSerializer(data=query_params)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        url = data.get('url')
        user = request.user
        try:
            preview_link_data = user.get_preview_link_data_for_url(url)
        except URLNotFound:
            return ApiMessageResponse(_('The specified url was not found.'),
                                      status=status.HTTP_400_BAD_REQUEST)
        except URLUnreachable:
            return ApiMessageResponse(
                _('The specified url was not reachable.'),
                status=status.HTTP_400_BAD_REQUEST)

        return Response(preview_link_data, status=status.HTTP_200_OK)
コード例 #9
0
    def post(self, request):
        user = request.user
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)
        token = serializer.validated_data.get('token')

        user.verify_email_with_token(token)

        return ApiMessageResponse(_('Email verified'),
                                  status=status.HTTP_200_OK)
コード例 #10
0
    def delete(self, request, invite_id):
        serializer = DeleteUserInviteSerializer(data={'invite_id': invite_id})
        serializer.is_valid(raise_exception=True)

        user = request.user

        with transaction.atomic():
            user.delete_user_invite_with_id(invite_id)

        return ApiMessageResponse(_('Successfully deleted invite'),
                                  status=status.HTTP_200_OK)
コード例 #11
0
ファイル: views.py プロジェクト: javabudd/okuna-api
    def post(self, request):
        request_data = request.data
        serializer = AuthenticatedUserLanguageSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        user = request.user

        with transaction.atomic():
            user.set_language_with_id(language_id=data.get('language_id'))

        return ApiMessageResponse(_('Language successfully set'), status=status.HTTP_200_OK)
コード例 #12
0
    def post(self, request):
        serializer = RegisterTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        validated_data = serializer.validated_data
        token = validated_data.get('token')

        UserInvite = get_user_invite_model()

        # raises error if invalid
        #UserInvite.check_token_is_valid(token=token)

        return ApiMessageResponse(_('Token valid'),
                                  status=status.HTTP_202_ACCEPTED)
コード例 #13
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)
コード例 #14
0
    def post(self, request, post_uuid, post_comment_id):
        serializer = UnmutePostCommentSerializer(
            data={
                'post_uuid': post_uuid,
                'post_comment_id': post_comment_id,
            })
        serializer.is_valid(raise_exception=True)

        user = request.user

        with transaction.atomic():
            user.unmute_post_comment_with_id(post_comment_id=post_comment_id)

        return ApiMessageResponse(message=_('Post comment unmuted.'),
                                  status=status.HTTP_200_OK)
コード例 #15
0
ファイル: views.py プロジェクト: zoist/okuna-api
    def put(self, request):
        serializer = CommonCommunityNameSerializer(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():
            user.exclude_community_with_name_from_profile_posts(community_name)

        return ApiMessageResponse(_('Community excluded from this feed'),
                                  status=status.HTTP_202_ACCEPTED)
コード例 #16
0
ファイル: views.py プロジェクト: zoist/okuna-api
    def post(self, request):
        serializer = RequestToFollowUserSerializer(
            data=request.data, context={"request": request})
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        user_to_cancel_request_for = data.get('username')

        user = request.user

        with transaction.atomic():
            user.delete_follow_request_for_user_with_username(
                user_to_cancel_request_for)

        return ApiMessageResponse(_('Follow request cancelled.'),
                                  status=status.HTTP_200_OK)
コード例 #17
0
ファイル: views.py プロジェクト: zoist/okuna-api
    def post(self, request):
        serializer = ApproveUserFollowRequestSerializer(
            data=request.data, context={"request": request})
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data

        user_to_approve_follow_request_from_username = data.get('username')

        user = request.user

        with transaction.atomic():
            user.approve_follow_request_from_user_with_username(
                user_username=user_to_approve_follow_request_from_username)

        return ApiMessageResponse(_('Follow request approved.'),
                                  status=status.HTTP_200_OK)
コード例 #18
0
ファイル: views.py プロジェクト: shiruba/openbook-api
    def post(self, request):
        request_data = request.data
        serializer = VerifyPasswordResetSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data
        token = data.get('token')
        new_password = data.get('new_password')

        User = get_user_model()
        user = User.get_user_for_password_reset_token(token)

        with transaction.atomic():
            user.verify_password_reset_token(token=token, password=new_password)

        return ApiMessageResponse(_('Password set successfully'), status=status.HTTP_200_OK)
コード例 #19
0
    def post(self, request):
        request_data = request.data
        serializer = RequestPasswordResetSerializer(data=request_data)
        serializer.is_valid(raise_exception=True)

        data = serializer.validated_data

        User = get_user_model()
        email = data.get('email')
        user = User.get_user_with_email(email)

        with transaction.atomic():
            user.request_password_reset()

        return ApiMessageResponse(
            _('A password reset link was sent to the email'),
            status=status.HTTP_200_OK)
コード例 #20
0
ファイル: views.py プロジェクト: zenothin/openbook-api
    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)
コード例 #21
0
ファイル: views.py プロジェクト: zoist/okuna-api
    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)
コード例 #22
0
    def post(self, request, hashtag_name):
        request_data = request.data.copy()
        request_data['hashtag_name'] = hashtag_name

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

        data = serializer.validated_data

        hashtag_name = data.get('hashtag_name')
        description = data.get('description')
        category_id = data.get('category_id')

        user = request.user

        with transaction.atomic():
            user.report_hashtag_with_name(hashtag_name=hashtag_name, category_id=category_id,
                                          description=description)

        return ApiMessageResponse(_('Hashtag reported, thanks!'), status=status.HTTP_201_CREATED)
コード例 #23
0
ファイル: views.py プロジェクト: zoist/okuna-api
    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)
コード例 #24
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)
コード例 #25
0
 def post(self, request):
     serializer = self.serializer_class(data=request.data)
     serializer.is_valid(raise_exception=True)
     # The serializer contains the email checks, meaning at this line, it's all good.
     return ApiMessageResponse(_('Email available'),
                               status=status.HTTP_202_ACCEPTED)
コード例 #26
0
ファイル: checks.py プロジェクト: zoist/okuna-api
 def get(self, request):
     return ApiMessageResponse(message=_('Congrats, you\'re not suspended :-)'), status=status.HTTP_200_OK)