[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-bank] branch master updated: slightly better error handling
From: |
gnunet |
Subject: |
[taler-bank] branch master updated: slightly better error handling |
Date: |
Mon, 17 Feb 2020 20:47:02 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository bank.
The following commit(s) were added to refs/heads/master by this push:
new 98747f4 slightly better error handling
98747f4 is described below
commit 98747f4f3c3a153af3a9e7b1dfc9f87ee1ed33a6
Author: Florian Dold <address@hidden>
AuthorDate: Mon Feb 17 20:46:56 2020 +0100
slightly better error handling
---
talerbank/app/middleware.py | 3 +++
talerbank/app/urls.py | 2 ++
talerbank/app/views.py | 30 ++++++++++++++----------------
3 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/talerbank/app/middleware.py b/talerbank/app/middleware.py
index e335a1a..093ff20 100644
--- a/talerbank/app/middleware.py
+++ b/talerbank/app/middleware.py
@@ -106,3 +106,6 @@ class ExceptionMiddleware:
)
set_profile_hint(request, failure=True, success=False,
hint=exception.hint)
return redirect(render_to)
+ else:
+ return JsonResponse(dict(hint="unexpected exception",
exception=str(exception)), status=500)
+
diff --git a/talerbank/app/urls.py b/talerbank/app/urls.py
index c2a524c..639eefa 100644
--- a/talerbank/app/urls.py
+++ b/talerbank/app/urls.py
@@ -70,7 +70,9 @@ taler_bank_accounts_api_patterns = [
"accounts/<str:acct_id>/withdrawals/<str:wid>/abort",
views.bank_accounts_api_abort_withdrawal,
),
+ # FIXME: this endpoint is deprecated
path("testing/withdraw", views.withdraw_headless, name="testing-withdraw"),
+ # FIXME: this endpoint is deprecated
path(
"testing/withdraw-uri", views.withdraw_headless_uri,
name="testing-withdraw-uri"
),
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index 4463f79..ca1afb2 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -391,17 +391,9 @@ class UserReg(forms.Form):
password = forms.CharField(widget=forms.PasswordInput())
-def internal_register(request):
+def internal_register(username, password):
if not settings.ALLOW_REGISTRATIONS:
raise Exception("registration not allowed!")
- input_data = UserReg(request.POST)
-
- if not input_data.is_valid():
- msg = "Wrong field(s): %s." % ", ".join(input_data.errors.keys())
- raise InvalidInputData(msg)
-
- username = input_data.cleaned_data["username"]
- password = input_data.cleaned_data["password"]
if User.objects.filter(username=username).exists():
raise UsernameUnavailable(f"Username {username} is unavailable")
@@ -434,10 +426,12 @@ def register_headless(request):
"""
if not settings.ALLOW_REGISTRATIONS:
return JsonResponse(dict(error="registrations are not allowed"),
status=403)
+ username = expect_json_body_str(request, "username")
+ password = expect_json_body_str(request, "password")
try:
- user = internal_register(request)
+ internal_register(username, password)
except UsernameUnavailable:
- return HttpResponse(status=409) # Conflict
+ return JsonResponse(dict(hint="username unavailable"), status=409) #
Conflict
except InvalidInputData:
return HttpResponse(status=406) # Not Acceptable
@@ -460,11 +454,15 @@ def register(request):
# Process POST.
try:
- user = internal_register(request)
-
+ input_data = UserReg(request.POST)
+ if not input_data.is_valid():
+ msg = "Wrong field(s): %s." % ", ".join(input_data.errors.keys())
+ raise InvalidInputData(msg)
+ username = input_data.cleaned_data["username"]
+ password = input_data.cleaned_data["password"]
+ user = internal_register(username, password)
except UsernameUnavailable as e:
return render(request, "register.html", {"not_available": True})
-
except InvalidInputData as e:
return render(
request,
@@ -721,7 +719,7 @@ def serve_history(request, user_account):
def expect_json_body_str(request, param_name):
body = json.loads(request.body) # FIXME: cache!
- val = body[param_name]
+ val = body.get(param_name)
if not isinstance(val, str):
# FIXME: throw right exception to be handled by middleware
raise Exception(f"expected string for {param_name}")
@@ -730,7 +728,7 @@ def expect_json_body_str(request, param_name):
def expect_json_body_amount(request, param_name):
body = json.loads(request.body) # FIXME: cache!
- val = body[param_name]
+ val = body.get(param_name)
if not isinstance(val, str):
# FIXME: throw right exception to be handled by middleware
raise Exception(f"expected string for {param_name}")
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-bank] branch master updated: slightly better error handling,
gnunet <=