示例#1
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"))
示例#2
0
def expense():
    ## Expense ##

    # Get input from html
    try:
        category = request.form['category']
    except KeyError:
        flash("Please select a category")
        return redirect(url_for("index"))

    try:
        amount = float(request.form['amount'])
    except ValueError:
        flash("Please enter a valid number for expense amount")
        return redirect(url_for("index"))

    if category != "":
        # Store as a class Expense object
        EM = ExpenseManager()
        Next_ID = EM.read_largest_id(expense_csv) + 1  # Assign the next ID#
        expense = Expense(Next_ID, category, amount)

        # Add the expense into the Expense Manager
        EM.add_expense(expense)

        # Deduct expense amount from balance
        bal_dict = from_csv(balance_csv)
        bal_dict["balance"] = float(bal_dict["balance"]) - float(
            expense.Amount)
        if bal_dict["balance"] < float(bal_dict["budget"]):
            flash("Your balance has exceeded your budget!")

        # Save expense
        EM.to_csv(expense_csv)

        # Save balance, budget
        add_to_csv(bal_dict["balance"], bal_dict["budget"])
    elif len(category) == 0:
        flash("Category can't be left empty")
        return redirect(url_for("index"))

    flash(f'Expense #{Next_ID} has been added!')
    flash(f'${expense.Amount} deducted from balance')
    return redirect(url_for("index"))
示例#3
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"))