def update_expense(ID, category, amount, date): EM = ExpenseManager() EM.from_csv(expense_csv) expense = Expense(ID, category, amount, date) EM.upd_expense(ID, expense) EM.override_to_csv(expense_csv)
def display_expense_by_month(): """ Summarize all expesnses by month :return: All expenses subtotal in last 12 months :rtype: dict """ EM = ExpenseManager() EM.from_csv(expense_csv) return EM.by_month_expense()
def list_all_expenses(): """ Lists all expenses in the expenses csv file :return: All expenses records :rtype: dict """ EM = ExpenseManager() EM.from_csv(expense_csv) return {"expenses": EM.get_expenses()}
def display_expense_by_category(): """ Summarize all expenses by category :return: All expenses subtotal by category in last 12 months, with percentage :rtype: dict """ EM = ExpenseManager() EM.from_csv(expense_csv) return EM.by_category()
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 delete_expense(ID): """ Delete the expense record from the list :return: None :rtype: None """ # Load the list of expenses from csv, then put it into EM to manipulate # Finally put it back to the csv EM = ExpenseManager() EM.from_csv(expense_csv) EM.del_expense(ID) EM.override_to_csv(expense_csv)
def update_expense(ID, category, amount, date): """ Updates the specified expense :param ID: ID of expense to be updated :type ID: int :return: None :rtype: None """ EM = ExpenseManager() EM.from_csv(expense_csv) expense = Expense(ID, category, amount, date) EM.upd_expense(ID, expense) EM.override_to_csv(expense_csv)
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 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"))