forked from pchojka/Py_Expense_template
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstatus.py
More file actions
38 lines (33 loc) · 1.4 KB
/
status.py
File metadata and controls
38 lines (33 loc) · 1.4 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
import csv
import ast
from user import get_users
from collections import defaultdict
def show_status():
users = get_users()
user_paybacks = {}
for user in users:
# {user: [{amount, payback_user}, ...], ...}
user_paybacks[user['username']] = []
with open('expense_report.csv', mode='r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
expense = ast.literal_eval(row[0])
spender = expense['spender']
for payback in expense['payback']:
for user, payback_list in user_paybacks.items():
if user == payback['user']:
if len(payback_list) != 0:
for pay in payback_list:
if pay['payback_user'] == spender:
pay['amount'] += payback['payback_amount']
elif user != spender:
payback_list.append({'amount': payback['payback_amount'], 'payback_user': spender})
print(user_paybacks)
for user, paybacks in user_paybacks.items():
if paybacks:
for payback in paybacks:
amount = payback['amount']
payback_user = payback['payback_user']
print(f"{user} owes {amount:.2f}€ to {payback_user}.")
else:
print(f"{user} owes nothing.")