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