diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2019-11-29 16:55:20 +0100 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2019-11-29 16:55:20 +0100 |
commit | 258613121ae37015f007b285a5b82af4f09e0db2 (patch) | |
tree | 306a819b3b92d48696736845cbdc3f5ea5ed5a69 | |
parent | e61f7dc4576af119582b1035db43243dd52ca8b4 (diff) | |
download | bank-258613121ae37015f007b285a5b82af4f09e0db2.tar.gz bank-258613121ae37015f007b285a5b82af4f09e0db2.tar.bz2 bank-258613121ae37015f007b285a5b82af4f09e0db2.zip |
abstracting exceptions raising
-rw-r--r-- | talerbank/app/schemas.py | 38 | ||||
-rw-r--r-- | talerbank/app/views.py | 8 |
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 ) |