diff options
Diffstat (limited to 'talerbank/app/schemas.py')
-rw-r--r-- | talerbank/app/schemas.py | 38 |
1 files changed, 26 insertions, 12 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() ## |