def get_evidence(evidence_id): evidence = evidence_service.get_submitted_evidence(evidence_id) evidence_data = {} if evidence: evidence_data = evidence._asdict() if evidence_data: domain_criteria = domain_criteria_service.get_criteria_by_domain_id( evidence_data['domain_id']) evidence_data['domain_criteria'] = [ x.serialize() for x in domain_criteria ] previous_evidence = evidence_service.get_previous_submitted_evidence_for_supplier_and_domain( evidence_id, evidence.domain_id, evidence.supplier_code) evidence_data['previous_rejected'] = ( True if previous_evidence and previous_evidence.status == 'rejected' else False) evidence_data[ 'previous_id'] = previous_evidence.id if previous_evidence else False try: evidence_data['criteriaNeeded'] = int( DomainCriteria( domain_id=evidence_data.get('domain_id', None), rate=evidence_data.get('maxDailyRate', None)).get_criteria_needed()) except DomainCriteriaInvalidRateException as e: abort(400, str(e)) return jsonify(evidence=evidence_data), 200
def get_previous_evidence_and_feedback(evidence_id): evidence = evidence_service.get_evidence_by_id(evidence_id) if not evidence: abort(404) if evidence.status not in ['assessed', 'rejected']: abort(404) evidence_data = evidence.serialize() if evidence_data: domain_criteria = domain_criteria_service.get_criteria_by_domain_id( evidence_data['domainId']) evidence_data['domain_criteria'] = [ x.serialize() for x in domain_criteria ] evidence_data['domain_price_maximum'] = evidence.domain.price_maximum feedback = evidence_assessment_service.find( evidence_id=evidence.id).one_or_none() if feedback: evidence_data['feedback'] = feedback.serialize() assessor = users.find(id=int(feedback.user_id)).one_or_none() evidence_data['assessor'] = assessor.name if assessor else '' evidence_data['domainName'] = evidence.domain.name supplier = suppliers.get_supplier_by_code(evidence.supplier_code) evidence_data['supplierName'] = supplier.name if supplier else '' try: evidence_data['criteriaNeeded'] = int( DomainCriteria( domain_id=evidence_data.get('domainId', None), rate=evidence_data.get('maxDailyRate', None)).get_criteria_needed()) except DomainCriteriaInvalidRateException as e: abort(400, str(e)) return jsonify(evidence=evidence_data), 200
def __init__(self, data, evidence=None): self.data = data self.evidence = evidence self.max_criteria = 2 if self.evidence: self.domain = domain_service.get_by_name_or_id(evidence.domain.id) self.domain_criteria = domain_criteria_service.get_criteria_by_domain_id( evidence.domain.id) self.criteria_enforcement_cutoff_date = None key_value = key_values_service.get_by_key( 'criteria_enforcement_cutoff_date') if key_value: self.criteria_enforcement_cutoff_date = (pendulum.parse( key_value['data']['value'], tz='Australia/Canberra').date())
def get_evidence_feedback(evidence_id): evidence = evidence_service.get_evidence_by_id(evidence_id) if not evidence or current_user.supplier_code != evidence.supplier_code: not_found("No evidence for id '%s' found" % (evidence_id)) if not evidence.status == 'rejected': abort('Only rejected submissions can contain feedback') evidence_assessment = evidence_assessment_service.get_assessment_for_rejected_evidence( evidence_id) if not evidence_assessment: abort('Failed to get the evidence assessment') try: domain_criteria = DomainCriteria(domain_id=evidence.domain.id, rate=evidence.data.get( 'maxDailyRate', None)) criteria_needed = domain_criteria.get_criteria_needed() except Exception as e: abort(str(e)) criteria_from_domain = {} domain_criteria = domain_criteria_service.get_criteria_by_domain_id( evidence.domain.id) for criteria in domain_criteria: criteria_from_domain[str(criteria.id)] = criteria.name criteria = {} failed_criteria = evidence_assessment.data.get('failed_criteria', {}) vfm = evidence_assessment.data.get('vfm', None) for criteria_id, criteria_response in evidence.get_criteria_responses( ).iteritems(): has_feedback = True if criteria_id in failed_criteria.keys() else False criteria[criteria_id] = { "response": criteria_response, "name": criteria_from_domain[criteria_id] if criteria_id in criteria_from_domain else '', "has_feedback": has_feedback, "assessment": failed_criteria[criteria_id] if has_feedback else {} } current_evidence = evidence_service.get_latest_evidence_for_supplier_and_domain( evidence.domain.id, current_user.supplier_code) data = { 'domain_id': evidence.domain.id, 'domain_name': evidence.domain.name, 'criteria': criteria, 'criteria_needed': criteria_needed, 'current_evidence_id': current_evidence.id if current_evidence.status == 'draft' else None, 'vfm': vfm } return jsonify(data)
def __init__(self, data, evidence=None): self.data = data self.evidence = evidence if self.evidence: self.domain = domain_service.get_by_name_or_id(evidence.domain.id) self.domain_criteria = domain_criteria_service.get_criteria_by_domain_id(evidence.domain.id)