def list_countersigned_agreement_file(supplier_id, framework_slug):
    supplier = data_api_client.get_supplier(supplier_id)['suppliers']
    framework = data_api_client.get_framework(framework_slug)['frameworks']
    supplier_framework = data_api_client.get_supplier_framework_info(supplier_id, framework_slug)['frameworkInterest']
    if not supplier_framework['onFramework'] or supplier_framework['agreementStatus'] in (None, 'draft'):
        abort(404)
    agreements_bucket = s3.S3(
        current_app.config['DM_AGREEMENTS_BUCKET'], endpoint_url=current_app.config.get("DM_S3_ENDPOINT_URL")
    )
    countersigned_agreement_document = agreements_bucket.get_key(supplier_framework.get('countersignedPath'))

    remove_countersigned_agreement_confirm = convert_to_boolean(request.args.get('remove_countersigned_agreement'))

    countersigned_agreement = []
    if countersigned_agreement_document:
        last_modified = datetimeformat(parse_date(countersigned_agreement_document['last_modified']))
        document_name = degenerate_document_path_and_return_doc_name(supplier_framework.get('countersignedPath'))
        countersigned_agreement = [{"last_modified": last_modified, "document_name": document_name}]

    return render_template(
        "suppliers/upload_countersigned_agreement.html",
        supplier=supplier,
        framework=framework,
        countersigned_agreement=countersigned_agreement,
        remove_countersigned_agreement_confirm=remove_countersigned_agreement_confirm
    )
def list_agreements(framework_slug):
    framework = data_api_client.get_framework(framework_slug)['frameworks']
    status_labels = get_status_labels()

    status = request.args.get("status")
    if status and status not in status_labels:
        abort(400)

    supplier_frameworks = _get_supplier_frameworks(framework_slug,
                                                   status=status)

    for supplier_framework in supplier_frameworks:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            parse_date(supplier_framework['agreementReturnedAt']))

    # Determine which template to use.
    # G-Cloud 7 and earlier frameworks do not have a frameworkAgreementVersion and use an old countersigning flow
    # G-Cloud 12 and newer frameworks use e-signature flow (countersignatures are automated)
    is_e_signature_flow = False
    if framework.get('frameworkAgreementVersion'):
        template = "view_agreements_list.html"
        if framework['slug'] not in OLD_COUNTERSIGNING_FLOW_FRAMEWORKS:
            status_labels['signed'] = "Waiting for automated countersigning"
            is_e_signature_flow = True
    else:
        template = 'view_agreements.html'

    return render_template(template,
                           framework=framework,
                           supplier_frameworks=supplier_frameworks,
                           degenerate_document_path_and_return_doc_name=lambda
                           x: degenerate_document_path_and_return_doc_name(x),
                           status=status,
                           status_labels=status_labels,
                           is_e_signature_flow=is_e_signature_flow)
def framework_agreement(framework_slug):
    framework = get_framework(data_api_client,
                              framework_slug,
                              allowed_statuses=['standstill', 'live'])
    supplier_framework = return_supplier_framework_info_if_on_framework_or_abort(
        data_api_client, framework_slug)

    if supplier_framework['agreementReturned']:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            date_parse(supplier_framework['agreementReturnedAt']))

    # if there's a frameworkAgreementVersion key, it means we're on G-Cloud 8 or higher
    if framework.get('frameworkAgreementVersion'):
        drafts, complete_drafts = get_drafts(data_api_client, framework_slug)
        lots_with_completed_drafts = [
            lot for lot in framework['lots']
            if count_drafts_by_lot(complete_drafts, lot['slug'])
        ]

        return render_template(
            'frameworks/contract_start.html',
            signature_page_filename=SIGNATURE_PAGE_FILENAME,
            framework=framework,
            lots=[{
                'name': lot['name'],
                'has_completed_draft': (lot in lots_with_completed_drafts)
            } for lot in framework['lots']],
            supplier_framework=supplier_framework,
        ), 200

    return render_template("frameworks/agreement.html",
                           framework=framework,
                           supplier_framework=supplier_framework,
                           agreement_filename=AGREEMENT_FILENAME), 200
def list_agreements(framework_slug):
    framework = data_api_client.get_framework(framework_slug)['frameworks']
    supplier_frameworks = data_api_client.find_framework_suppliers(
        framework_slug, agreement_returned=True)['supplierFrameworks']

    for supplier_framework in supplier_frameworks:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            parse_date(supplier_framework['agreementReturnedAt']))

    return render_template('view_agreements.html',
                           framework=framework,
                           supplier_frameworks=supplier_frameworks,
                           signed_agreement_prefix=SIGNED_AGREEMENT_PREFIX)
def list_agreements(framework_slug):
    framework = data_api_client.get_framework(framework_slug)['frameworks']
    supplier_frameworks = data_api_client.find_framework_suppliers(
        framework_slug, agreement_returned=True
    )['supplierFrameworks']

    for supplier_framework in supplier_frameworks:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            parse_date(supplier_framework['agreementReturnedAt']))

    return render_template(
        'view_agreements.html',
        framework=framework,
        supplier_frameworks=supplier_frameworks,
        signed_agreement_prefix=SIGNED_AGREEMENT_PREFIX
    )
예제 #6
0
def framework_agreement(framework_slug):
    framework = get_framework(data_api_client,
                              framework_slug,
                              allowed_statuses=['standstill', 'live'])

    supplier_framework = data_api_client.get_supplier_framework_info(
        current_user.supplier_id, framework_slug)['frameworkInterest']
    if not supplier_framework['onFramework']:
        abort(404)

    if supplier_framework['agreementReturned']:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            date_parse(supplier_framework['agreementReturnedAt']))

    return render_template("frameworks/agreement.html",
                           framework=framework,
                           supplier_framework=supplier_framework,
                           agreement_filename=AGREEMENT_FILENAME), 200
def framework_agreement(framework_slug):
    framework = get_framework(data_api_client, framework_slug, allowed_statuses=['standstill', 'live'])

    supplier_framework = data_api_client.get_supplier_framework_info(
        current_user.supplier_id, framework_slug
    )['frameworkInterest']
    if not supplier_framework['onFramework']:
        abort(404)

    if supplier_framework['agreementReturned']:
        supplier_framework['agreementReturnedAt'] = datetimeformat(
            date_parse(supplier_framework['agreementReturnedAt'])
        )

    return render_template(
        "frameworks/agreement.html",
        framework=framework,
        supplier_framework=supplier_framework,
        agreement_filename=AGREEMENT_FILENAME
    ), 200
예제 #8
0
def list_countersigned_agreement_file(supplier_id, framework_slug):
    supplier = data_api_client.get_supplier(supplier_id)['suppliers']
    framework = data_api_client.get_framework(framework_slug)['frameworks']
    agreements_bucket = s3.S3(current_app.config['DM_AGREEMENTS_BUCKET'])
    path = get_agreement_document_path(framework_slug, supplier_id, COUNTERSIGNED_AGREEMENT_FILENAME)
    countersigned_agreement_document = agreements_bucket.get_key(path)
    if countersigned_agreement_document:
        countersigned_agreement = countersigned_agreement_document
        countersigned_agreement['last_modified'] = datetimeformat(parse_date(
            countersigned_agreement['last_modified']))
        countersigned_agreement = [countersigned_agreement]
    else:
        countersigned_agreement = []

    return render_template(
        "suppliers/upload_countersigned_agreement.html",
        supplier=supplier,
        framework=framework,
        countersigned_agreement=countersigned_agreement,
        countersigned_agreement_filename=COUNTERSIGNED_AGREEMENT_FILENAME
    )
def test_datetimeformat(dt, formatted_datetime):
    assert datetimeformat(dt) == formatted_datetime
 def check_datetimeformat(dt, formatted_datetime):
     assert datetimeformat(dt) == formatted_datetime