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