def costars_contract_upload():
    '''Upload a contract document pdf for costars

    Because the COSTARS website streams contract documents via POST requests
    instead having them live at some static endpoint, they are re-hosted in S3.

    :status 200: render the upload costars document template
    :status 302: attempt to upload a costars document to S3 and set the
        ``contract_href`` on the relevant
        :py:class:`~purchasing.data.contracts.ContractBase` object. Redirect
        to the same page.
    '''
    contracts = ContractBase.query.join(ContractType).filter(
        db.func.lower(ContractType.name) == 'costars',
        db.or_(ContractBase.contract_href == None,
               ContractBase.contract_href == '')).all()

    form = ContractUploadForm()

    if form.validate_on_submit():
        _file = request.files.get('upload')
        filename, filepath = upload_costars_contract(_file)

        contract = ContractBase.query.get(int(form.data.get('contract_id')))

        contract.update(contract_href=filepath)
        flash('Contract uploaded successfully', 'alert-success')
        return redirect(url_for('conductor_uploads.costars_contract_upload'))

    return render_template('/conductor/upload/upload_costars_documents.html',
                           form=form,
                           contracts=contracts)
def costars_contract_upload():
    contracts = ContractBase.query.join(ContractType).filter(
        db.func.lower(ContractType.name) == 'costars',
        db.or_(
            ContractBase.contract_href == None,
            ContractBase.contract_href == ''
        )
    ).all()

    form = ContractUploadForm()

    if form.validate_on_submit():
        _file = request.files.get('upload')
        filename, filepath = upload_costars_contract(_file)

        contract = ContractBase.query.get(int(form.data.get('contract_id')))

        contract.update(contract_href=filepath)
        flash('Contract uploaded successfully', 'alert-success')
        return redirect(url_for('conductor_uploads.costars_contract_upload'))

    return render_template(
        '/conductor/upload/upload_costars_documents.html',
        form=form, contracts=contracts
    )
def costars_contract_upload():
    '''Upload a contract document pdf for costars

    Because the COSTARS website streams contract documents via POST requests
    instead having them live at some static endpoint, they are re-hosted in S3.

    :status 200: render the upload costars document template
    :status 302: attempt to upload a costars document to S3 and set the
        ``contract_href`` on the relevant
        :py:class:`~purchasing.data.contracts.ContractBase` object. Redirect
        to the same page.
    '''
    contracts = ContractBase.query.join(ContractType).filter(
        db.func.lower(ContractType.name) == 'costars',
        db.or_(
            ContractBase.contract_href == None,
            ContractBase.contract_href == ''
        )
    ).all()

    form = ContractUploadForm()

    if form.validate_on_submit():
        _file = request.files.get('upload')
        filename, filepath = upload_costars_contract(_file)

        contract = ContractBase.query.get(int(form.data.get('contract_id')))

        contract.update(contract_href=filepath)
        flash('Contract uploaded successfully', 'alert-success')
        return redirect(url_for('conductor_uploads.costars_contract_upload'))

    return render_template(
        '/conductor/upload/upload_costars_documents.html',
        form=form, contracts=contracts
    )