Exemple #1
0
def create_test_contribution(funder_id, land_listing_id, fund_id):
    contribution = Contribution(funder_id=funder_id,
                                land_listing_id=land_listing_id,
                                fund_id=fund_id,
                                date=datetime.date.today(),
                                amount=10.25)
    contribution.insert()

    return str(contribution.id)
Exemple #2
0
    def contribute_to_fund(land_listing_id, fund_id):
        body = request.get_json()
        amount = body.get('amount', None)
        funder_id = body.get('funder_id', None)

        try:
            amount = float(amount)
        except Exception:
            abort(422)

        land_listing = LandListing.query.get(land_listing_id)
        fund = Fund.query.get(fund_id)
        funder = Funder.query.get(funder_id)

        if (land_listing is None) or (fund is None) or (funder is None):
            abort(404)

        land_listing_fund_ids = [fund.id for fund in land_listing.funds]

        if fund_id not in land_listing_fund_ids:
            abort(422)

        try:
            new_contribution = Contribution(funder_id=funder.id,
                                            land_listing_id=land_listing.id,
                                            fund_id=fund.id,
                                            date=datetime.date.today(),
                                            amount=amount)
            new_contribution.insert()

            return jsonify({
                'success': True,
                'contribution': new_contribution.format(),
            }), 200

        except Exception:
            abort(422)