예제 #1
0
def validate_contract_document_operation_not_in_allowed_contract_status(
        request):
    contract = request.validated['contract']
    if contract.status not in ['pending', 'active']:
        raise_operation_error(
            request, 'Can\'t {} document in current contract status'.format(
                OPERATIONS.get(request.method)))
예제 #2
0
def validate_cancellation_in_termainated_status(request):
    tender = request.validated['tender']
    if tender.status in ['complete', 'cancelled', 'unsuccessful']:
        raise_operation_error(
            request,
            'Can\'t {} cancellation in current ({}) tender status'.format(
                OPERATIONS.get(request.method), tender.status))
def validate_patch_tender_bot_only_in_draft_pending(request):
    if request.authenticated_role == 'agreement_selection' and \
            request.validated['tender_src']['status'] != 'draft.pending':
        raise_operation_error(
            request, 'Can\'t {} tender in current ({}) tender status'.format(
                OPERATIONS.get(request.method),
                request.validated['tender_status']))
예제 #4
0
def validate_qualification_document_operation_not_in_pending(request):
    qualification = request.validated['qualification']
    if qualification.status != 'pending':
        raise_operation_error(
            request,
            'Can\'t {} document in current qualification status'.format(
                OPERATIONS.get(request.method)))
 def validate_update_tender(self):
     """ TODO move validators
     This class is inherited in openua package, but validate_update_tender function has different validators.
     For now, we have no way to use different validators on methods according to procedure type.
     """
     if self.request.authenticated_role != 'auction' and self.request.validated['tender_status'] not in ['active.tendering', STAGE2_STATUS] or \
        self.request.authenticated_role == 'auction' and self.request.validated['tender_status'] not in ['active.auction', 'active.qualification']:
         raise_operation_error(
             self.request,
             'Can\'t {} document in current ({}) tender status'.format(
                 OPERATIONS.get(self.request.method),
                 self.request.validated['tender_status']))
     if self.request.validated[
             'tender_status'] == 'active.tendering' and calculate_business_date(
                 get_now(), TENDERING_EXTRA_PERIOD,
                 self.request.validated['tender']
             ) > self.request.validated['tender'].tenderPeriod.endDate:
         raise_operation_error(
             self.request,
             'tenderPeriod should be extended by {0.days} days'.format(
                 TENDERING_EXTRA_PERIOD))
     if self.request.method in ['PUT', 'PATCH']:
         validate_tender_document_update_not_by_author_or_tender_owner(
             self.request)
     return True
def validate_agreement_operation_not_in_allowed_status(request):
    if request.validated['tender_status'] != 'draft.pending':
        raise_operation_error(
            request,
            'Can\'t {} agreement in current ({}) tender status'.format(
                OPERATIONS.get(request.method),
                request.validated['tender_status']))
예제 #7
0
def validate_operation_submission_in_not_allowed_period(request, **kwargs):
    framework = request.validated["framework"]
    enquiryPeriod = framework.get("enquiryPeriod")
    operation = OPERATIONS.get(request.method)
    period = framework.get("period")
    if (
        not enquiryPeriod
        or "endDate" not in enquiryPeriod
        or not period
        or "endDate" not in period
    ):
        raise_operation_error(
            request,
            "Submission cannot be {} without framework enquiryPeriod or period".format(operation)
        )
    enquiryPeriod_endDate = parse_date(enquiryPeriod["endDate"])
    period_endDate = parse_date(period["endDate"])
    now = get_now()

    if now < enquiryPeriod_endDate or now > period_endDate:
        raise_operation_error(
            request,
            "Submission can be {} only during the period: from ({}) to ({}).".format(
                operation, enquiryPeriod_endDate, period_endDate),
        )
def validate_complaint_operation_not_in_active_tendering(request):
    tender = request.validated['tender']
    if tender.status != 'active.tendering':
        raise_operation_error(
            request,
            'Can\'t {} complaint in current ({}) tender status'.format(
                OPERATIONS.get(request.method), tender.status))
def validate_award_complaint_operation_not_in_allowed_status(request):
    tender = request.validated['tender']
    if tender.status not in ['active.qualification', 'active.awarded']:
        raise_operation_error(
            request,
            'Can\'t {} complaint in current ({}) tender status'.format(
                OPERATIONS.get(request.method), tender.status))
def validate_bid_document_operation_with_award(request):
    if request.validated['tender_status'] in ['active.qualification', 'active.awarded'] and \
            not [i for i in request.validated['tender'].awards if i.status in ['pending', 'active'] and i.bid_id == request.validated['bid_id']]:
        raise_operation_error(
            request,
            'Can\'t {} document because award of bid is not in pending or active state'
            .format(OPERATIONS.get(request.method)))
예제 #11
0
def validate_add_complaint_not_in_qualification_stand_still(request):
    tender = request.validated['tender']
    if tender.status not in ('active.qualification.stand-still', ):
        raise_operation_error(
            request,
            'Can\'t {} complaint in current ({}) tender status'.format(
                OPERATIONS.get(request.method), tender.status))
예제 #12
0
파일: validation.py 프로젝트: lttga/op2
def validate_award_document(request):
    operation = OPERATIONS.get(request.method)

    allowed_tender_statuses = ["active.qualification"]
    if request.authenticated_role == "bots":
        allowed_tender_statuses.append("active.awarded")
    if request.validated["tender_status"] not in allowed_tender_statuses:
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                operation, request.validated["tender_status"]),
        )

    if any([
            i.status != "active" for i in request.validated["tender"].lots
            if i.id == request.validated["award"].lotID
    ]):
        raise_operation_error(
            request,
            "Can {} document only in active lot status".format(operation))
    if operation == "update" and request.authenticated_role != (
            request.context.author or "tender_owner"):
        request.errors.add("url", "role", "Can update document only author")
        request.errors.status = 403
        raise error_handler(request.errors)
예제 #13
0
def validate_contract_document_operation_not_in_allowed_contract_status(
        request, **kwargs):
    contract = request.validated["contract"]
    if contract.status not in ["pending", "active"]:
        raise_operation_error(
            request, "Can't {} document in current contract status".format(
                OPERATIONS.get(request.method)))
예제 #14
0
파일: validation.py 프로젝트: lttga/op2
def validate_update_complaint_not_in_qualification(request):
    tender = request.validated["tender"]
    if tender.status not in ("active.qualification", "active.qualification.stand-still"):
        raise_operation_error(
            request,
            "Can't {} complaint in current ({}) tender status".format(OPERATIONS.get(request.method), tender.status),
        )
def validate_qualification_document_operation_not_in_pending(request):
    qualification = request.validated["qualification"]
    if qualification.status != "pending":
        raise_operation_error(
            request,
            "Can't {} document in current qualification status".format(
                OPERATIONS.get(request.method)))
def validate_award_complaint_operation_not_in_active(request):
    tender = request.validated["tender"]
    if tender.status != "active":
        raise_operation_error(
            request,
            "Can't {} complaint in current ({}) tender status".format(OPERATIONS.get(request.method), tender.status),
        )
def validate_document_operation_in_not_allowed_period(request):
    if request.authenticated_role != 'auction' and request.validated['tender_status'] != 'active.tendering' or \
        request.authenticated_role == 'auction' and request.validated['tender_status'] not in ['active.auction', 'active.qualification']:
        raise_operation_error(
            request, 'Can\'t {} document in current ({}) tender status'.format(
                OPERATIONS.get(request.method),
                request.validated['tender_status']))
예제 #18
0
def validate_document_operation_on_agreement_status(request, **kwargs):
    status = request.validated["agreement"].status
    if status != "active":
        raise_operation_error(
            request,
            "Can't {} document in current ({}) agreement status".format(
                OPERATIONS.get(request.method), status))
def validate_qualification_document_operation_not_in_allowed_status(request):
    if request.validated["tender_status"] != "active.pre-qualification":
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                OPERATIONS.get(request.method),
                request.validated["tender_status"]),
        )
def validate_bid_document_operation_in_not_allowed_tender_status(request):
    if request.validated['tender_status'] not in [
            'active.tendering', 'active.qualification'
    ]:
        raise_operation_error(
            request, 'Can\'t {} document in current ({}) tender status'.format(
                OPERATIONS.get(request.method),
                request.validated['tender_status']))
예제 #21
0
def validate_document_operation_in_not_allowed_period(request, **kwargs):
    if request.validated["tender_status"] not in ["active.tendering", "draft"]:
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                OPERATIONS.get(request.method),
                request.validated["tender_status"]),
        )
예제 #22
0
def validate_cancellation_document_operation_not_in_allowed_status(request, **kwargs):
    if request.validated["tender_status"] in ["complete", "cancelled", "unsuccessful"]:
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                OPERATIONS.get(request.method), request.validated["tender_status"]
            ),
        )
def validate_contract_operation_not_in_allowed_status(request):
    if request.validated['tender_status'] not in [
            'active.qualification', 'active.awarded'
    ]:
        raise_operation_error(
            request, 'Can\'t {} contract in current ({}) tender status'.format(
                OPERATIONS.get(request.method),
                request.validated['tender_status']))
def validate_award_complaint_document_operation_only_for_active_lots(request):
    if any([
            i.status != 'active' for i in request.validated['tender'].lots
            if i.id == request.validated['award'].lotID
    ]):
        raise_operation_error(
            request, 'Can {} document only in active lot status'.format(
                OPERATIONS.get(request.method)))
예제 #25
0
def validate_agreement_operation_not_in_allowed_status(request, **kwargs):
    if request.validated["tender_status"] != "draft.pending":
        raise_operation_error(
            request,
            "Can't {} agreement in current ({}) tender status".format(
                OPERATIONS.get(request.method), request.validated["tender_status"]
            ),
        )
def validate_contract_document_operation_not_in_allowed_contract_status(
        request):
    if request.validated['contract'].status != 'active':
        raise_operation_error(
            request,
            'Can\'t {} document in current ({}) contract status'.format(
                OPERATIONS.get(request.method),
                request.validated['contract'].status))
예제 #27
0
def validate_contract_operation_not_in_active(request, **kwargs):
    if request.validated["tender_status"] not in ["active"]:
        raise_operation_error(
            request,
            "Can't {} contract in current ({}) tender status".format(
                OPERATIONS.get(request.method),
                request.validated["tender_status"]),
        )
예제 #28
0
def validate_framework_document_operation_not_in_allowed_status(request, **kwargs):
    if request.validated["framework"].status not in ["draft", "active"]:
        raise_operation_error(
            request,
            "Can't {} document in current ({}) framework status".format(
                OPERATIONS.get(request.method), request.validated["framework"].status
            ),
        )
예제 #29
0
def validate_operation_with_document_not_in_active_status(request, **kwargs):
    if request.validated["tender_status"] not in ("draft", "active"):
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                OPERATIONS.get(request.method),
                request.validated["tender_status"]),
        )
예제 #30
0
def validate_complaint_document_operation_not_in_allowed_status(request):
    if request.validated["tender_status"] not in ["active.tendering"]:
        raise_operation_error(
            request,
            "Can't {} document in current ({}) tender status".format(
                OPERATIONS.get(request.method), request.validated["tender_status"]
            ),
        )
def validate_contract_document_operation_not_in_allowed_contract_status(request):
    if request.validated['contract'].status != 'active':
        raise_operation_error(request, 'Can\'t {} document in current ({}) contract status'.format(OPERATIONS.get(request.method), request.validated['contract'].status))
 def validate_update_tender(self):
      """ TODO move validators
      This class is inherited in openua package, but validate_update_tender function has different validators.
      For now, we have no way to use different validators on methods according to procedure type.
      """
      if self.request.authenticated_role != 'auction' and self.request.validated['tender_status'] not in ['active.tendering', STAGE2_STATUS] or \
         self.request.authenticated_role == 'auction' and self.request.validated['tender_status'] not in ['active.auction', 'active.qualification']:
          raise_operation_error(self.request, 'Can\'t {} document in current ({}) tender status'.format(OPERATIONS.get(self.request.method), self.request.validated['tender_status']))
      if self.request.validated['tender_status'] == 'active.tendering' and calculate_business_date(get_now(), TENDERING_EXTRA_PERIOD, self.request.validated['tender']) > self.request.validated['tender'].tenderPeriod.endDate:
          raise_operation_error(self.request, 'tenderPeriod should be extended by {0.days} days'.format(TENDERING_EXTRA_PERIOD))
      if self.request.method in ['PUT', 'PATCH']:
          validate_tender_document_update_not_by_author_or_tender_owner(self.request)
      return True