forked from pchojka/Py_Expense_template
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexpense.py
More file actions
65 lines (56 loc) · 1.66 KB
/
expense.py
File metadata and controls
65 lines (56 loc) · 1.66 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
from PyInquirer import prompt
from user import get_users
import csv
users = get_users()
amount_question = [
{
"type":"input",
"name":"amount",
"message":"New Expense - Amount: ",
},
]
label_question = [
{
"type":"input",
"name":"label",
"message":"New Expense - Label: ",
},
]
spender_question = [
{
"type":"list",
"name":"spender",
"message":"New Expense - Spender: ",
"choices": [user['username'] for user in users]
},
]
def new_expense(*args):
amount = prompt(amount_question)
label = prompt(label_question)
spender = prompt(spender_question)
involved_question = [
{
"type":"checkbox",
"name":"involved_users",
"message":"New Expense - involve users: ",
"choices": [{'name': user["username"], 'checked': True if user["username"] == spender['spender'] else False } for user in users]
},
]
involved_users = prompt(involved_question)
print(involved_users)
paybacks = []
for user in involved_users['involved_users']:
if user != spender['spender']:
payback_amount = float(amount['amount']) / len(involved_users['involved_users'])
payback_dict = {
'user' : user,
'payback_amount': payback_amount,
}
paybacks.append(payback_dict)
infos = {**amount, **label, **spender, **{'payback': paybacks}}
print(infos)
with open('expense_report.csv', mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([infos])
print("Expense Added !")
return True