Repository navigation
Expand file tree
/
Copy pathexpense_tracker.py
More file actions
89 lines (77 loc) · 2.76 KB
/
Copy pathexpense_tracker.py
File metadata and controls
89 lines (77 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from prettytable import PrettyTable
import os
import datetime as dt
from expenses_report import ExpensesReport
from expense_manager import ExpenseManager
TODAY = dt.datetime.today().date()
def clear_screen():
# For Windows
if os.name == 'nt':
_ = os.system('cls')
# For Unix/Linux/MacOS
else:
_ = os.system('clear')
class ExpenseTracker:
def __init__(self, user):
"""
Initializes a new ExpenseTracker object.
Parameters:
user (str): The username of the current user.
Returns:
None
Method initializes the attributes of the ExpenseTracker object.
"""
self.user = user
self.expense_report = ExpensesReport(self.user)
self.expense_manager = ExpenseManager(self.user)
self.user_table = PrettyTable()
self.user_table.field_names = ["Name of the command", "Command"]
self.user_table.padding_width = 5
self.user_table.align["Command"] = 'c'
self.user_table.add_rows([
['Add today\'s expenses', 1],
['Add expenses for selected day', 2],
['Set month limit', 3],
['Look for month short data', 4],
['Display month data', 5],
['Get days report', 6],
['Send a mail report', 7],
['Log out from account', 'e']
])
def run(self, clear=False):
"""
Runs the expense tracking application.
Parameters:
clear (bool): Indicates whether to clear the screen before displaying the menu.
Returns:
bool: True if the user chooses to log out, False otherwise.
Method runs the expense tracking application, displaying the menu of available commands,
and executing the corresponding actions based on user input.
"""
self.expense_manager.check_emptiness()
if clear:
clear_screen()
print(self.user_table)
print()
choice = input("Enter command: ")
match choice:
case '1':
self.expense_manager.add_expenses(str(TODAY))
case '2':
self.expense_manager.add_expenses()
case '3':
self.expense_manager.set_limit(self.expense_report.select_month)
case '4':
self.expense_report.short_month_data()
case '5':
self.expense_report.display_month_data()
case '6':
self.expense_report.days_report()
case '7':
self.expense_report.send_mail_report()
case 'e':
return True
case _:
clear_screen()
print("Invalid input.\n".upper())
input("Press to continue... ")