示例#1
0
def edit(ID):
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)
    
    category = getattr(expense, "_Category")
    amount = getattr(expense, "_Amount")
    date = getattr(expense, "_Date")
    category=category.lower()
    
    return render_template("update.html", ID=ID,category=category, amount=amount, date=date)
示例#2
0
def update(ID):
    try:
        category = request.form['category']
        amount = float(request.form['amount'])
        date = request.form['date']
    except ValueError:
        flash("Please enter a valid number for expense amount")
        return redirect(url_for("edit", ID=ID))
    except KeyError:
        return redirect(url_for("index"))

    flash(f'Expense #{ID} has been updated!')

    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)
    original_expense = float(getattr(expense, "_Amount"))

    # Updates balance amount
    bal_dict = from_csv(balance_csv)
    original_balance = float(bal_dict["balance"])
    updated_expense = amount

    # Deducts from balance (expense amount increased)
    if updated_expense > original_expense:
        amount_to_change = updated_expense - original_expense
        updated_balance = original_balance - amount_to_change
        flash(f'${float(amount_to_change)} deducted from balance')

    # Adds to balance (expense amount decreased)
    elif updated_expense < original_expense:
        amount_to_change = original_expense - updated_expense
        updated_balance = original_balance + amount_to_change
        flash(f'${float(amount_to_change)} added to balance')
    else:
        updated_balance = original_balance

    # Save expense
    EM.to_csv(expense_csv)

    # Save balance, budget
    add_to_csv(updated_balance, bal_dict["budget"])

    update_expense(ID, category, amount, date)
    if updated_balance < float(bal_dict["budget"]):
        flash("Your balance has exceeded your budget!")

    return redirect(url_for("index"))
示例#3
0
def test_get_details():
    """
    Tests for the get_details method
    """
    manager = ExpenseManager()
    expense = Expense(1, "School", 200, "2020-02-13")

    # Checks if method exists
    assert hasattr(manager, "get_details")

    # Adds expense
    manager.add_expense(expense)

    # Checks if correct values are returned
    expense_object = manager.get_details(1)

    assert getattr(expense_object, "_Category") == "School"
    assert getattr(expense_object, "_Amount") == "200.00"
示例#4
0
def delete(ID):
    EM = ExpenseManager()
    EM.from_csv(expense_csv)
    expense = EM.get_details(ID)

    category = getattr(expense, "_Category")
    amount = getattr(expense, "_Amount")
    date = getattr(expense, "_Date")

    # Adds expense amount back to balance
    bal_dict = from_csv(balance_csv)
    bal_dict["balance"] = float(bal_dict["balance"]) + float(amount)

    # Save expense
    EM.to_csv(expense_csv)

    # Save balance, budget
    add_to_csv(bal_dict["balance"], bal_dict["budget"])

    delete_expense(ID)
    flash(f'Expense #{ID} has been deleted!')
    flash(f'${amount} added to balance')
    return redirect(url_for("index"))