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 )
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
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