diff --git a/store/backend.py b/store/backend.py index 5fc41569c1a3dc9608aa7013a06558df6cea7e35..4f7052537edb8debf36689f6c5910f2af0037a25 100644 --- a/store/backend.py +++ b/store/backend.py @@ -395,7 +395,7 @@ class TransferLogic: @staticmethod def annullateTransfer(transfer_id, token): - annullable_time = config['T_ANNULLABLE_TRANSFER_M'] + annullable_time = config['T_ANNULLABLE_TRANSFERS_M'] # warning: summertime/wintertime currently is not respected in the following calculations. This should be # implemented to avoid non-annullable transactions in the lost hour between summer- and wintertime @@ -404,14 +404,14 @@ class TransferLogic: timezone = pytz.timezone('Europe/Berlin') time_limit = timezone.localize(time_limit) - transfer = list(Transfer.objects.filter(id=transfer_id)) + transfer = list(Transfer.objects.filter(id=transfer_id))[0] if time_limit > transfer.time_stamp: raise TransferNotAnnullable() - receiver = list(User.objects.filter(id=transfer.receiver))[0] - sender = list(User.objects.filter(id=transfer.user))[0] + receiver = list(User.objects.filter(id=transfer.receiver_id))[0] + sender = list(User.objects.filter(id=transfer.sender_id))[0] with transaction.atomic(): - transfer.annulate() + transfer.annullate() receiver.updateMoney((-1) * transfer.amount) sender.updateMoney(transfer.amount) diff --git a/store/views.py b/store/views.py index 27f77e549e21680421254217b38ddd92b4c9f26f..558f7d42255530036f7df825d68c9f9fb45bcdd2 100644 --- a/store/views.py +++ b/store/views.py @@ -135,7 +135,13 @@ def transfer_money(request): def revert_transfer(request): - return HttpResponse() + transfer_id = request.POST.get('transfer_id') + token = request.POST.get('token') + try: + TransferLogic.annullateTransfer(transfer_id, token) + except TransferNotAnnullable as exc: + return JsonResponse({'error': str(exc)}, status=400) + return HttpResponse(status=200) # Test