summaryrefslogtreecommitdiff
path: root/talerbank/app/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'talerbank/app/views.py')
-rw-r--r--talerbank/app/views.py62
1 files changed, 45 insertions, 17 deletions
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index 0466a8e..a0a58b1 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -179,22 +179,30 @@ def get_session_flag(request, name):
##
-# Get a hint from the session and clear it. A 'hint' is a
-# "message" that different parts of the bank can send to each
-# other - via the state - communicating what is the state of
-# the HTTP session.
+# A session "hint" is a tuple indicating whether the
+# message is for a failure or a success, and containing
+# the message itself.
#
# @param request the HTTP request being served.
# @param name hint name
# @return the hint (a "null" one if none was found)
-def get_session_hint(request, name):
- if name in request.session:
- ret = request.session[name]
- del request.session[name]
+def get_session_hint(request, hintId):
+ if hintId in request.session:
+ ret = request.session[hintId]
+ del request.session[hintId]
return ret
- # Fail message, success message, hint.
+
return False, False, None
+def set_profile_hint(request, *, success, failure, hint):
+ set_session_hint(request, "profile_hint", success=success, failure=failure, hint=hint)
+
+def set_session_hint(request, hintId, *, success, failure, hint):
+ if hintId in request.session:
+ LOGGER.warning(f"Overriding a non consumed hint: {hintId}")
+ del request.session[hintId]
+ request.session[hintId] = success, failure, hint
+
##
# Build the list containing all the predefined accounts; the
@@ -299,18 +307,24 @@ def profile_page(request):
account_no=wtf.cleaned_data.get("receiver")
), wtf.cleaned_data.get("subject")
)
- request.session["profile_hint"] = False, True, "Wire transfer successful!"
+
+ set_profile_hint(
+ request,
+ failure=False,
+ success=True,
+ hint="Wire transfer successful!"
+ )
+
return redirect("profile")
+
wtf = WTForm()
- fail_message, success_message, hint = get_session_hint(
- request, "profile_hint"
- )
+ is_success, is_failure, hint = get_session_hint(request, "profile_hint")
context = dict(
name=request.user.username,
balance=request.user.bankaccount.amount,
sign="-" if request.user.bankaccount.debit else "",
- fail_message=fail_message,
- success_message=success_message,
+ fail_message=is_failure,
+ success_message=is_success,
hint=hint,
precision=settings.TALER_DIGITS,
currency=request.user.bankaccount.amount.currency,
@@ -479,7 +493,13 @@ def register(request):
}
)
- request.session["profile_hint"] = False, True, "Registration successful!"
+ set_profile_hint(
+ request,
+ success=True,
+ failure=False,
+ hint="Registration successful!"
+ )
+
django.contrib.auth.login(request, user)
return redirect("profile")
@@ -1099,8 +1119,16 @@ def confirm_withdrawal(request, withdraw_id):
op.amount, BankAccount.objects.get(user=request.user),
op.selected_exchange_account, op.selected_reserve_pub
)
- request.session["profile_hint"] = False, True, "Withdrawal successful!"
+
+ set_profile_hint(
+ request,
+ success=True,
+ failure=False,
+ hint="Withdrawal successful!"
+ )
+
request.session["just_withdrawn"] = True
+
return redirect("profile")
if request.method == "GET":
question, hashed_answer = make_question()