Exemplo n.º 1
0
def get_service_type_resources_view(request):
    """
    List details of resource types supported under a specific service type.
    """
    def _get_resource_types_info(res_type_names):
        res_type_classes = [
            rtc for rtn, rtc in models.RESOURCE_TYPE_DICT.items()
            if rtn in res_type_names
        ]
        return [
            sf.format_service_resource_type(rtc,
                                            SERVICE_TYPE_DICT[service_type])
            for rtc in res_type_classes
        ]

    service_type = ar.get_value_matchdict_checked(request, "service_type")
    ax.verify_param(
        service_type,
        paramCompare=SERVICE_TYPE_DICT.keys(),
        isIn=True,
        httpError=HTTPNotFound,
        msgOnFail=s.ServiceTypeResources_GET_NotFoundResponseSchema.description
    )
    resource_types_names = ax.evaluate_call(
        lambda: SERVICE_TYPE_DICT[service_type].resource_type_names,
        httpError=HTTPForbidden,
        content={u"service_type": str(service_type)},
        msgOnFail=s.ServiceTypeResourceTypes_GET_ForbiddenResponseSchema.
        description)
    return ax.valid_http(
        httpSuccess=HTTPOk,
        detail=s.ServiceTypeResourceTypes_GET_OkResponseSchema.description,
        content={
            u"resource_types": _get_resource_types_info(resource_types_names)
        })
Exemplo n.º 2
0
def update_user_view(request):
    """
    Update user information by user name.
    """

    user_name = ar.get_value_matchdict_checked(request, key="user_name")
    ax.verify_param(
        user_name,
        paramCompare=get_constant("MAGPIE_LOGGED_USER"),
        notEqual=True,
        httpError=HTTPBadRequest,
        paramName="user_name",
        content={u"user_name": user_name},
        msgOnFail=s.Service_PUT_BadRequestResponseSchema_ReservedKeyword.
        description)

    user = ar.get_user_matchdict_checked(request, user_name_key="user_name")
    new_user_name = ar.get_multiformat_post(request,
                                            "user_name",
                                            default=user.user_name)
    new_email = ar.get_multiformat_post(request, "email", default=user.email)
    new_password = ar.get_multiformat_post(request,
                                           "password",
                                           default=user.user_password)
    uu.check_user_info(new_user_name,
                       new_email,
                       new_password,
                       group_name=new_user_name)

    update_username = user.user_name != new_user_name
    update_password = user.user_password != new_password
    update_email = user.email != new_email
    ax.verify_param(any([update_username, update_password, update_email]),
                    isTrue=True,
                    httpError=HTTPBadRequest,
                    content={u"user_name": user.user_name},
                    msgOnFail=s.User_PUT_BadRequestResponseSchema.description)

    if user.user_name != new_user_name:
        existing_user = ax.evaluate_call(
            lambda: UserService.by_user_name(new_user_name,
                                             db_session=request.db),
            fallback=lambda: request.db.rollback(),
            httpError=HTTPForbidden,
            msgOnFail=s.User_PUT_ForbiddenResponseSchema.description)
        ax.verify_param(
            existing_user,
            isNone=True,
            httpError=HTTPConflict,
            msgOnFail=s.User_PUT_ConflictResponseSchema.description)
        user.user_name = new_user_name
    if user.email != new_email:
        user.email = new_email
    if user.user_password != new_password and new_password is not None:
        UserService.set_password(user, new_password)
        UserService.regenerate_security_code(user)

    return ax.valid_http(httpSuccess=HTTPOk,
                         detail=s.Users_PUT_OkResponseSchema.description)
Exemplo n.º 3
0
def get_service_type_resource_types_view(request):
    """
    List all resource types supported under a specific service type.
    """
    service_type = ar.get_value_matchdict_checked(request, "service_type")
    ax.verify_param(service_type, param_compare=SERVICE_TYPE_DICT.keys(), is_in=True, http_error=HTTPNotFound,
                    msg_on_fail=s.ServiceTypeResourceTypes_GET_NotFoundResponseSchema.description)
    resource_types = ax.evaluate_call(lambda: SERVICE_TYPE_DICT[service_type].resource_type_names,
                                      http_error=HTTPForbidden, content={"service_type": str(service_type)},
                                      msg_on_fail=s.ServiceTypeResourceTypes_GET_ForbiddenResponseSchema.description)
    return ax.valid_http(http_success=HTTPOk, detail=s.ServiceTypeResourceTypes_GET_OkResponseSchema.description,
                         content={"resource_types": resource_types})
Exemplo n.º 4
0
def handle_temporary_url(request):
    """
    Handles the operation according to the provided temporary URL token.
    """
    str_token = ar.get_value_matchdict_checked(request, key="token", pattern=ax.UUID_REGEX)
    str_token = str_token.split(":")[-1]  # remove optional prefix if any (e.g.: 'urn:uuid:')
    db_session = request.db
    tmp_token = models.TemporaryToken.by_token(str_token, db_session=db_session)
    ax.verify_param(tmp_token, not_none=True,
                    http_error=HTTPNotFound, content={"token": str(str_token)},
                    msg_on_fail=s.TemporaryURL_GET_NotFoundResponseSchema.description)
    ru.handle_temporary_token(tmp_token, db_session=db_session)
    return ax.valid_http(http_success=HTTPOk, detail=s.TemporaryURL_GET_OkResponseSchema.description)