diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-01-18 16:46:39 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-01-18 16:46:39 +0100 |
commit | 00673579e2e9acd9277c56de6d97e0b73748b881 (patch) | |
tree | 32f52be8ae6ffa0569f7b66459f7a61f5d216406 /talerbank/app/views.py | |
parent | 8bad829f155590706b581528d46db249e94b9d18 (diff) | |
download | bank-00673579e2e9acd9277c56de6d97e0b73748b881.tar.gz bank-00673579e2e9acd9277c56de6d97e0b73748b881.tar.bz2 bank-00673579e2e9acd9277c56de6d97e0b73748b881.zip |
user account name instead of internal ID
Diffstat (limited to 'talerbank/app/views.py')
-rw-r--r-- | talerbank/app/views.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/talerbank/app/views.py b/talerbank/app/views.py index eae593a..0a02907 100644 --- a/talerbank/app/views.py +++ b/talerbank/app/views.py @@ -996,28 +996,27 @@ def api_withdraw_operation(request, withdraw_id): op = TalerWithdrawOperation.objects.get(withdraw_id=withdraw_id) except ObjectDoesNotExist: return JsonResponse(dict(error="withdraw operation does not exist"), status=404) - user_acct_no = op.withdraw_account.account_no - host = request.get_host() if request.method == "POST": data = json.loads(decode_body(request)) exchange_payto_uri = data.get("selected_exchange") try: - account_no = get_acct_from_payto(exchange_payto_uri) + exchange_account_name = get_acct_from_payto(exchange_payto_uri) except: return JsonResponse(dict(error="exchange payto URI malformed"), status=400) try: - exchange_acct = BankAccount.objects.get(account_no=account_no) - except ObjectDoesNotExist: + exchange_user = User.objects.get(username=exchange_account_name) + except User.DoesNotExist: return JsonResponse( - dict(error="bank accound in payto URI unknown"), status=400 + dict(error="bank account in payto URI unknown"), status=400 ) + exchange_account = exchange_user.bankaccount selected_reserve_pub = data.get("reserve_pub") if not isinstance(selected_reserve_pub, str): return JsonResponse(dict(error="reserve_pub must be a string"), status=400) if op.selection_done or op.withdraw_done: if ( - op.selected_exchange_account != exchange_acct + op.selected_exchange_account != exchange_account or op.selected_reserve_pub != selected_reserve_pub ): return JsonResponse( @@ -1026,19 +1025,20 @@ def api_withdraw_operation(request, withdraw_id): ) # No conflict, same data! return JsonResponse(dict(), status=200) - op.selected_exchange_account = exchange_acct + op.selected_exchange_account = exchange_account op.selected_reserve_pub = selected_reserve_pub op.selection_done = True op.save() return JsonResponse(dict(), status=200) elif request.method == "GET": + host = request.get_host() return JsonResponse( dict( selection_done=op.selection_done, transfer_done=op.withdraw_done, amount=op.amount.stringify(), wire_types=["x-taler-bank"], - sender_wire=f"payto://x-taler-bank/{host}/{user_acct_no}", + sender_wire=f"payto://x-taler-bank/{host}/{op.withdraw_account.user.username}", suggested_exchange=settings.TALER_SUGGESTED_EXCHANGE, confirm_transfer_url=request.build_absolute_uri( reverse("withdraw-confirm", args=(withdraw_id,)) |