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)))
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']))
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']))
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)))
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))
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)
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)))
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']))
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']))
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"]), )
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)))
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))
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"]), )
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 ), )
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"]), )
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