Пример #1
0
def _validate_monitoring_statuses(request, obj_name, valid_statuses):
    monitoring = request.validated["monitoring"]
    if monitoring.status not in valid_statuses:
        raise_operation_error(
            request,
            "{} can't be added to monitoring in current ({}) status".format(
                obj_name, monitoring.status))
def _validate_document_status(request, status):
    status_current = request.validated['monitoring'].status
    statuses = status if isinstance(status, tuple) else (status, )
    if status_current not in statuses:
        raise_operation_error(
            request,
            'Can\'t add document in current {} monitoring status.'.format(
                status_current))
def _validate_patch_monitoring_status_active_to_declined(request):
    _validate_patch_monitoring_status_active_to_addressed_or_declined(request)
    if request.validated.get('data',
                             {}).get('conclusion').get('violationOccurred'):
        raise_operation_error(
            request,
            'Can\'t set {} status to monitoring if violation occurred.'.format(
                DECLINED_STATUS))
def validate_elimination_report_data(request):
    """
    Validate elimination report data POST
    """
    if request.validated["monitoring"].eliminationReport is not None:
        raise_operation_error(request,
                              "Can't post another elimination report.")
    _validate_elimination_report_status(request)
    return validate_data(request, EliminationReport)
def _validate_patch_monitoring_status_addressed_to_completed(request):
    monitoring = request.validated['monitoring']
    if not get_now() > monitoring.eliminationPeriod.endDate:
        raise_operation_error(
            request,
            'Can\'t change status to completed before elimination period ends.'
        )
    if not request.validated.get('data', {}).get('eliminationResolution'):
        request.errors.status = 422
        request.errors.add('body', 'eliminationResolution',
                           'This field is required.')
Пример #6
0
def validate_appeal_data(request):
    """
    Validate appeal report data POST
    """
    monitoring = request.validated['monitoring']
    _validate_monitoring_statuses(request, "Appeal",
                                  (ADDRESSED_STATUS, DECLINED_STATUS))

    if monitoring.appeal is not None:
        raise_operation_error(request, "Can't post another appeal.")

    return validate_data(request, Appeal)
def validate_posting_elimination_resolution(request):
    monitoring = request.validated['monitoring']
    monitoring.eliminationResolution.datePublished = monitoring.eliminationResolution.dateCreated
    if not monitoring.eliminationReport:
        accelerator = get_monitoring_accelerator(request.context)
        allow_post_since = calculate_normalized_business_date(
            monitoring.conclusion.datePublished, RESOLUTION_WAIT_PERIOD,
            accelerator)
        if get_now() < allow_post_since:
            raise_operation_error(
                request,
                "Can't post eliminationResolution without eliminationReport "
                "earlier than {} business days since conclusion.datePublished".
                format(RESOLUTION_WAIT_PERIOD.days))
def validate_appeal_data(request):
    """
    Validate appeal report data POST
    """
    monitoring = request.validated['monitoring']
    if monitoring.appeal is not None:
        raise_operation_error(request, "Can't post another appeal.")

    if monitoring.conclusion is None or monitoring.conclusion.datePublished is None:
        request.errors.status = 422
        request.errors.add('body', 'appeal',
                           'Can\'t post before conclusion is published.')
        raise error_handler(request.errors)

    return validate_data(request, Appeal)
Пример #9
0
def validate_patch_liability_data(request):
    """
    Validate liability report data PATCH
    """

    _validate_monitoring_statuses(
        request,
        "Liability proceeding",
        (ADDRESSED_STATUS, COMPLETED_STATUS),
    )

    if request.context.proceeding:
        raise_operation_error(request, "Can't post another proceeding.")

    return validate_data(request, Liability, partial=True)
def validate_credentials_generate(request):
    try:
        token = get_access_token(request)
    except ValueError:
        raise_operation_error(request, 'No access token was provided.')

    try:
        response = TendersClient(
            request.registry.api_token,
            host_url=request.registry.api_server,
            api_version=request.registry.api_version,
        ).extract_credentials(request.validated['monitoring'].tender_id)
    except ResourceNotFound:
        raise_operation_error(
            request, 'Tender {} not found'.format(
                request.validated['monitoring'].tender_id))
    else:
        if sha512(token).hexdigest() != response['data']['tender_token']:
            raise forbidden(request)
Пример #11
0
def validate_patch_appeal_data(request):
    """
    Validate appeal report data PATCH
    """
    monitoring = request.validated['monitoring']
    if monitoring.appeal is None:
        raise_operation_error(request, "Appeal not found", status=404)

    _validate_monitoring_statuses(
        request,
        "Appeal proceeding",
        (ADDRESSED_STATUS, DECLINED_STATUS, COMPLETED_STATUS, CLOSED_STATUS,
         STOPPED_STATUS),
    )

    if request.context.proceeding is not None:
        raise_operation_error(request, "Can't post another proceeding.")

    return validate_data(request, Appeal, partial=True)
def _validate_post_post_status(request):
    post = request.validated['post']
    monitoring = request.validated['monitoring']
    status_current = monitoring.status
    if status_current in (ADDRESSED_STATUS, DECLINED_STATUS):
        if request.authenticated_userid == monitoring.tender_owner:
            if any(post.postOf == CONCLUSION_OBJECT_TYPE
                   and post.relatedPost is None for post in monitoring.posts):
                raise_operation_error(
                    request,
                    'Can\'t add more than one {} post in current {} monitoring status.'
                    .format(CONCLUSION_OBJECT_TYPE, status_current))
        elif post.relatedPost is None:
            raise_operation_error(
                request,
                'Can\'t add post in current {} monitoring status.'.format(
                    status_current))
    elif status_current not in (ACTIVE_STATUS, ):
        raise_operation_error(
            request, 'Can\'t add post in current {} monitoring status.'.format(
                status_current))
def _validate_patch_monitoring_status_declined_to_closed(request):
    monitoring = request.validated['monitoring']
    if not get_now() > monitoring.eliminationPeriod.endDate:
        raise_operation_error(
            request,
            'Can\'t change status to closed before elimination period ends.')