Added feature to transfer money to another account + some minor improvements

This commit is contained in:
Julian Müller (ChaoticByte) 2023-04-14 23:47:12 +02:00
parent 2bab323b86
commit 8702233934
11 changed files with 164 additions and 30 deletions

View file

@ -50,7 +50,6 @@ def login_page(request):
"user_list": userlist
})
@login_required
def index(request):
context = {
@ -58,7 +57,6 @@ def index(request):
}
return render(request, "index.html", context)
@login_required
def history(request):
context = {
@ -66,7 +64,6 @@ def history(request):
}
return render(request, "history.html", context)
@login_required
def order(request, drinkid):
try:
@ -76,7 +73,6 @@ def order(request, drinkid):
except Drink.DoesNotExist:
return HttpResponseRedirect("/")
@login_required
def deposit(request):
return render(request, "deposit.html", {})
@ -91,17 +87,19 @@ def statistics(request):
}
return render(request, "statistics.html", context)
@login_required
def transfer(request):
userlist = get_user_model().objects.filter(hide_from_userlist=False).filter(is_active=True).order_by("username")
return render(request, "transfer.html", {"user_list": userlist})
@login_required
def supply(request):
return render(request, "supply.html")
@login_required
def redirect_home(request):
return HttpResponseRedirect("/")
# API for XHR requests #
@login_required
@ -123,7 +121,6 @@ def api_order_drink(request):
print(f"An exception occured while processing an order: User: {user.username} - Exception: {e}", file=sys.stderr)
return HttpResponse(b"", status=500)
@login_required
def api_deposit(request):
# check request -> deposit
@ -140,9 +137,38 @@ def api_deposit(request):
return HttpResponse("success", status=200)
else: raise Exception("Deposit amount too big or small.")
except Exception as e:
print(f"An exception occured while processing a transaction: User: {user.username} - Exception: {e}", file=sys.stderr)
print(f"An exception occured while processing a deposit transaction: User: {user.username} - Exception: {e}", file=sys.stderr)
return HttpResponse(b"", status=500)
@login_required
def api_transfer(request):
# check request -> transfer
user = request.user
try:
recipient = get_user_model().objects.get(id=int(request.POST["recipientuser"]))
if recipient.id == user.id:
raise Exception(f"User {user.username} tried to transfer to themself.")
amount = decimal.Decimal(request.POST["transferamount"])
if 0.00 < amount <= user.balance:
print("sender:", user.username)
print("recipient:", recipient.username)
print("amount:", amount)
# create transaction
RegisterTransaction.objects.create(
transaction_sum=-amount,
comment=f"Transfer to {recipient.username}",
is_transfer=True,
user=user)
RegisterTransaction.objects.create(
transaction_sum=amount,
comment=f"Transfer from {user.username}",
is_transfer=True,
user=recipient)
return HttpResponse("success", status=200)
else: raise Exception("Transfer amount too big or small.")
except Exception as e:
print(f"An exception occured while processing a transfer transaction: User: {user.username} - Exception: {e}", file=sys.stderr)
return HttpResponse(b"", status=500)
@login_required
def api_supply(request):