summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2019-11-29 16:55:20 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2019-11-29 16:55:20 +0100
commit258613121ae37015f007b285a5b82af4f09e0db2 (patch)
tree306a819b3b92d48696736845cbdc3f5ea5ed5a69
parente61f7dc4576af119582b1035db43243dd52ca8b4 (diff)
downloadbank-258613121ae37015f007b285a5b82af4f09e0db2.tar.gz
bank-258613121ae37015f007b285a5b82af4f09e0db2.tar.bz2
bank-258613121ae37015f007b285a5b82af4f09e0db2.zip
abstracting exceptions raising
-rw-r--r--talerbank/app/schemas.py38
-rw-r--r--talerbank/app/views.py8
2 files changed, 29 insertions, 17 deletions
diff --git a/talerbank/app/schemas.py b/talerbank/app/schemas.py
index c3524fa..ed3eb83 100644
--- a/talerbank/app/schemas.py
+++ b/talerbank/app/schemas.py
@@ -126,18 +126,32 @@ class RejectData(forms.Form):
account_number = forms.IntegerField()
-class AddIncomingData(forms.Form):
- auth = AuthField()
- amount = forms.CharField(
- validators=[
- RegexValidator(
- AMOUNT_REGEX, message="Format CURRENCY:X[.Y] not respected"
- )
- ]
- )
- subject = forms.CharField()
- credit_account = forms.IntegerField(min_value=1)
- exchange_url = forms.URLField()
+class AddIncomingData():
+
+ def __init__(self, data):
+ self.inner_form = self.InnerForm(data)
+ if not self.inner_form.is_valid():
+ JSONFieldException(data.errors, 400)
+
+ def get(self, name):
+ ret = self.inner_form.cleaned_data.get(name)
+ # rare / impossible
+ if not ret:
+ raise JSONFieldException(data.errors, 400)
+ return ret
+
+ class InnerForm(forms.Form):
+ auth = AuthField()
+ amount = forms.CharField(
+ validators=[
+ RegexValidator(
+ AMOUNT_REGEX, message="Format CURRENCY:X[.Y] not respected"
+ )
+ ]
+ )
+ subject = forms.CharField()
+ credit_account = forms.IntegerField(min_value=1)
+ exchange_url = forms.URLField()
##
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index 9186837..c97d86b 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -878,19 +878,17 @@ def reject(request, user_account):
def add_incoming(request, user_account):
data = AddIncomingData(json.loads(decode_body(request)))
- if not data.is_valid():
- raise JSONFieldException(data.errors, 400)
subject = "%s %s" % (
- data.cleaned_data["subject"], data.cleaned_data["exchange_url"]
+ data.get("subject"), data.get("exchange_url")
)
credit_account = BankAccount.objects.get(
- account_no=data.cleaned_data["credit_account"]
+ account_no=data.get("credit_account")
)
wtrans = wire_transfer(
- Amount.parse(data.cleaned_data["amount"]), user_account.bankaccount,
+ Amount.parse(data.get("amount")), user_account.bankaccount,
credit_account, subject
)