Data management and updating

Tracker for updating and getting data
Datamanager to serialize/deserialize
Main for initialization
Config for config
This commit is contained in:
2026-06-02 11:53:52 +02:00
parent 0e9d343b1e
commit 232e74c8c9
5 changed files with 207 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
from uuid import uuid4
from core.transaction import Transaction
class Tracker:
def __init__(self, data_manager) -> None:
self.data_manager = data_manager
self.users = {}
self.items = {}
self.transactions = []
self.debts = {}
self._load_all_data()
def _load_all_data(self):
self.users = self.data_manager.load_users()
self.items = self.data_manager.load_items()
self.debts = self.data_manager.load_debts()
self.transactions = self.data_manager.load_transactions()
def add_purchase(self, user_id, item_id):
if user_id not in self.users:
return {"status": "error", "message": "User not found"}
if item_id not in self.items:
return {"status": "error", "message": "Item not found"}
item = self.items[item_id]
if user_id not in self.debts:
self.debts[user_id] = 0.0
self.debts[user_id] += item.price
transaction = Transaction(str(uuid4()), user_id, item_id, item.price)
self.transactions.append(transaction)
self.data_manager.save_debts(self.debts)
self.data_manager.save_transactions(self.transactions)
return {
"status": "success",
"message": f"Added {item.name} to {self.users[user_id].name}'s debt",
"new_debt": self.debts[user_id],
}
def get_user_debt(self, user_id):
return self.debts.get(user_id, 0.0)
def get_all_debts(self):
return {
user_id: {
"name": self.users[user_id].name,
"debt": self.debts.get(user_id, 0.0),
}
for user_id in self.users
}
def adjust_debt(self, user_id, amount, admin_password):
if not self._verify_admin(admin_password):
return {"status": "error", "message": "Invalid password"}
if user_id not in self.users:
return {"status": "error", "message": "User not found"}
self.debts[user_id] -= amount
self.data_manager.save_debts(self.debts)
return {
"status": "success",
"message": f"Reduced debt by {amount}",
"new_debt": self.debts[user_id],
}
def _verify_admin(self, pwd):
from config import ADMIN_PASSWORD
return pwd == ADMIN_PASSWORD
def get_user_by_id(self, user_id):
return self.users.get(user_id)
def get_all_users(self):
return self.users
def get_items(self):
return self.items