Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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())
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
 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)