Пример #1
0
 def test_account_request_get_raise_ApiError_if_request_not_found(
         self, mock_get_by_id):
     # Arrange
     request_id = "1"
     mock_get_by_id.side_effect = Exception()
     # Act # Assert
     with self.assertRaises(ApiError):
         account_request_api.get(request_id)
Пример #2
0
def get(request):
    """
        Get an account request

        Parameters:
            request (HttpRequest): request

        Returns:
            Response object
    """
    try:
        # Get parameters
        account_request_id = request.DATA['request_id']
        try:
            requests = account_request_api.get(account_request_id)
            serializer = AccountRequestSerializer(requests)

            if serializer.is_valid():
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                content = {'message': 'Serialization failed'}
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

    except Exception as e:
        content = {'message': 'Expected parameters not provided.'}
        logger.exception(e.message)
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
Пример #3
0
def deny(request):
    """
        Deny an account request

        Parameters:
            request (HttpRequest): request

        Returns:
            Response object
    """
    try:
        # Get parameters
        request_id = request.DATA['requestid']
        account_request_from_api = account_request_api.get(request_id)
        try:
            account_request_api.deny(account_request_from_api)
            return Response({}, status=status.HTTP_204_NO_CONTENT)

        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

    except Exception as e:
        content = {'message': 'Expected parameters not provided.'}
        logger.exception(e.message)
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
Пример #4
0
def accept(request):
    """
        Accept an account request

        Parameters:
            request (HttpRequest): request

        Returns:
            Response object
    """
    try:
        # Get parameters
        request_id = request.DATA['requestid']
        account_request_from_api = account_request_api.get(request_id)
        try:
            user_request = account_request_api.accept(account_request_from_api,
                                                      send_mail=False)
        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

        # Serialize the request
        serializer = AccountRequestSerializer(user_request)

        if serializer.is_valid():
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            content = {'message': 'Serialization failed'}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

    except Exception as e:
        content = {'message': 'Expected parameters not provided.'}
        logger.exception(e.message)
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
Пример #5
0
 def test_account_request_get_return_request_object(self, mock_get_by_id):
     # Arrange
     request_id = "1"
     mock_get_by_id.return_value = _create_account_request()
     # Act
     result = account_request_api.get(request_id)
     # Assert
     self.assertIsInstance(result, AccountRequest)
Пример #6
0
    def get_object(self, pk):
        """Get Account Request from db

        Args:

            pk: ObjectId

        Returns:

            Account Request
        """
        try:
            return account_request_api.get(pk)
        except exceptions.DoesNotExist:
            raise Http404
Пример #7
0
def deny_request(request):
    """
    Denies an account request
    :param request:
    :return:
    """

    try:
        email_params = None
        send_email = (request.POST.get("sendEmail") == "true"
                      and SEND_EMAIL_WHEN_ACCOUNT_REQUEST_IS_DENIED)
        request_id = request.POST.get("requestid")
        email_subject = request.POST.get("emailParams[subject]")
        email_body = request.POST.get("emailParams[body]")

        if request_id and send_email and email_subject and email_body:

            # check the HTML syntax
            parse_html(email_body, "div")

            # check dangerous script injection
            if email_body != stripjs(email_body):
                return HttpResponseBadRequest("Unsafe HTML.")

            email_params = {
                "subject": email_subject,
                "body": email_body,
            }
        elif not request_id:
            raise ("Wrong parameters.")

        account_request_from_api = account_request_api.get(request_id)
        account_request_api.deny(account_request_from_api, send_email,
                                 email_params)
        message = "Request denied"

    except HTMLError as e:
        return HttpResponseBadRequest("HTML is not generated properly.")
    except main_exceptions.ApiError as error:
        raise exceptions.WebsiteAjaxError(str(error))
    except Exception as exception:
        raise exceptions.WebsiteAjaxError(str(exception))

    return HttpResponse(json.dumps({"message": message}),
                        content_type="application/json")
Пример #8
0
def accept_request(request):
    """
    Accepts a request and creates the user account
    :param request:
    :return:
    """
    try:
        request_id = request.POST['requestid']
        account_request_from_api = account_request_api.get(request_id)
        account_request_api.accept(account_request_from_api)
        message = "Request Accepted"
    except main_exceptions.ApiError as error:
        raise exceptions.WebsiteAjaxError(error.message)
    except Exception as exception:
        raise exceptions.WebsiteAjaxError(exception.message)

    return HttpResponse(json.dumps({"message": message}),
                        content_type='application/json')
Пример #9
0
def deny_request(request):
    """
    Denies an account request
    :param request:
    :return:
    """

    try:
        request_id = request.POST['requestid']
        account_request_from_api = account_request_api.get(request_id)
        account_request_api.deny(account_request_from_api)
        message = "Request denied"
    except main_exceptions.ApiError as error:
        raise exceptions.WebsiteAjaxError(error.message)
    except Exception as exception:
        raise exceptions.WebsiteAjaxError(exception.message)

    return HttpResponse(json.dumps({"message": message}),
                        content_type='application/json')
Пример #10
0
def get_deny_email_template(request):
    request_id = request.GET.get("requestid")

    if request_id:
        account_request = account_request_api.get(request_id)

        context = {
            "lastname": account_request.last_name,
            "firstname": account_request.first_name,
            "URI": SERVER_URI,
        }

        template = loader.get_template(
            "core_website_app/admin/email/request_account_denied.html")
        content = template.render(context)

        return HttpResponse(json.dumps({"template": content}),
                            content_type="application/json")
    else:
        return HttpResponseBadRequest("Missing account request id.")
Пример #11
0
def get(request):
    """ Get an account request

    Parameters:

        {
            "request_id": "request_id"
        }

    Args:

        request: HTTP request

    Returns:

        - code: 200
          content: List of account requests
        - code: 400
          content: Validation error / api exceptions / missing parameters
    """
    try:
        # Get parameters
        account_request_id = request.DATA['request_id']
        try:
            requests = account_request_api.get(account_request_id)
            serializer = AccountRequestSerializer(requests)

            if serializer.is_valid():
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                content = {'message': 'Serialization failed'}
                return Response(content, status=status.HTTP_400_BAD_REQUEST)

        except Exception as api_exception:
            content = {'message': api_exception.message}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

    except Exception as e:
        content = {'message': 'Expected parameters not provided.'}
        logger.exception(e.message)
        return Response(content, status=status.HTTP_400_BAD_REQUEST)