gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]