summaryrefslogtreecommitdiff
path: root/talerbank/app/schemas.py
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2019-11-29 22:23:25 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2019-11-29 22:23:25 +0100
commitc7f8e5962d4b7175d2f4e51f45a434a969b91f4b (patch)
tree31876004b0d026c85ea47f4d633f3b2ee2441ac4 /talerbank/app/schemas.py
parent258613121ae37015f007b285a5b82af4f09e0db2 (diff)
downloadbank-c7f8e5962d4b7175d2f4e51f45a434a969b91f4b.tar.gz
bank-c7f8e5962d4b7175d2f4e51f45a434a969b91f4b.tar.bz2
bank-c7f8e5962d4b7175d2f4e51f45a434a969b91f4b.zip
finishing style migration
Diffstat (limited to 'talerbank/app/schemas.py')
-rw-r--r--talerbank/app/schemas.py130
1 files changed, 61 insertions, 69 deletions
diff --git a/talerbank/app/schemas.py b/talerbank/app/schemas.py
index ed3eb83..6b529b3 100644
--- a/talerbank/app/schemas.py
+++ b/talerbank/app/schemas.py
@@ -54,6 +54,11 @@ class InvalidSession(ValueError):
self.http_status_code = http_status_code
super().__init__()
+class InternalServerError(Exception):
+ def __init__(self, hint):
+ self.hint = hint
+ self.http_status_code = 500
+ self.taler_error_code = 1011 # TALER_EC_INTERNAL_LOGIC_ERROR
##
# Exception class to be raised when a JSON
@@ -119,28 +124,35 @@ class AuthField(forms.Field):
raise ValidationError(json.dumps(af.errors.as_json()))
-class RejectData(forms.Form):
- auth = AuthField()
- # FIXME: adjust min/max values.
- row_id = forms.IntegerField()
- account_number = forms.IntegerField()
+class BankValidator():
+ def __init__(self, validator, data):
+ self.validation_result = validator(data)
+ if not self.validation_result.is_valid():
+ raise JSONFieldException(self.validation_result.errors, 400)
+ def get(self, name, default=None):
+ ret = self.validation_result.cleaned_data.get(name)
+ if not ret:
+ return default
+ return ret
-class AddIncomingData():
+class RejectData(BankValidator):
def __init__(self, data):
- self.inner_form = self.InnerForm(data)
- if not self.inner_form.is_valid():
- JSONFieldException(data.errors, 400)
+ super(RejectData, self).__init__(self.InnerValidator, data)
- 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 InnerValidator(forms.Form):
+ auth = AuthField()
+ # FIXME: adjust min/max values.
+ row_id = forms.IntegerField()
+ account_number = forms.IntegerField()
- class InnerForm(forms.Form):
+
+class AddIncomingData(BankValidator):
+ def __init__(self, data):
+ super(AddIncomingData, self).__init__(self.InnerValidator, data)
+
+ class InnerValidator(forms.Form):
auth = AuthField()
amount = forms.CharField(
validators=[
@@ -155,8 +167,7 @@ class AddIncomingData():
##
-# Form specification that validates GET parameters from a
-# /history request.
+# Subset of /history and /history-range input.
class HistoryParamsBase(forms.Form):
auth = forms.CharField(
validators=[
@@ -198,23 +209,25 @@ class HistoryParamsBase(forms.Form):
account_number = forms.IntegerField(required=False)
-class HistoryParams(HistoryParamsBase):
- def clean_start(self):
- delta = self.cleaned_data.get("delta")
- start = self.cleaned_data.get("start")
- if None == start:
- return 0 if 0 <= delta else UINT64_MAX
- return start
+class HistoryParams(BankValidator):
+ def __init__(self, data):
+ super(HistoryParams, self).__init__(self.InnerValidator, data)
+
+ class InnerValidator(HistoryParamsBase):
+ # FIXME: adjust min/max values.
+ delta = forms.IntegerField()
+ start = forms.IntegerField(required=False)
- # FIXME: adjust min/max values.
- delta = forms.IntegerField()
- start = forms.IntegerField(required=False)
+class HistoryRangeParams(BankValidator):
-class HistoryRangeParams(HistoryParamsBase):
- # FIXME: adjust min/max values.
- end = forms.IntegerField()
- start = forms.IntegerField()
+ def __init__(self, data):
+ super(HistoryRangeParams, self).__init__(self.InnerValidator, data)
+
+ class InnerValidator(HistoryParamsBase):
+ # FIXME: adjust min/max values.
+ end = forms.IntegerField()
+ start = forms.IntegerField()
class PaytoField(forms.Field):
@@ -237,17 +250,22 @@ class PaytoField(forms.Field):
raise ValidationError("URL is not 'payto'")
-class WithdrawHeadless(forms.Form):
- auth = AuthField()
- amount = forms.CharField(
- validators=[
- RegexValidator(
- AMOUNT_REGEX, message="Format CURRENCY:X[.Y] not respected"
- )
- ]
- )
- reserve_pub = forms.CharField()
- exchange_wire_details = PaytoField(required=False)
+class WithdrawHeadless(BankValidator):
+
+ def __init__(self, data):
+ super(WithdrawHeadless, self).__init__(self.InnerValidator, data)
+
+ class InnerValidator(forms.Form):
+ auth = AuthField()
+ amount = forms.CharField(
+ validators=[
+ RegexValidator(
+ AMOUNT_REGEX, message="Format CURRENCY:X[.Y] not respected"
+ )
+ ]
+ )
+ reserve_pub = forms.CharField(required=True)
+ exchange_wire_details = PaytoField(required=False)
class WithdrawHeadlessUri(forms.Form):
amount = forms.CharField(
@@ -259,19 +277,6 @@ class WithdrawHeadlessUri(forms.Form):
)
-class PinTanParams(forms.Form):
- amount_currency = forms.CharField(
- validators=[
- RegexValidator("^[A-Z]+$", message="Currency is all upper case")
- ]
- )
- amount_value = forms.IntegerField(min_value=0)
- amount_fraction = forms.IntegerField(min_value=0)
- exchange = forms.URLField()
- reserve_pub = forms.CharField()
- exchange_wire_details = PaytoField()
-
-
class SenderWireDetails(forms.Form):
# FIXME: must be changed to 'payto' format.
type = forms.CharField()
@@ -287,16 +292,3 @@ class SenderWireDetailsField(forms.Field):
swd = SenderWireDetails(value)
if not swd.is_valid():
raise ValidationError(json.dumps(swd.errors.as_json()))
-
-
-class WithdrawSessionData(forms.Form):
- amount = forms.CharField(
- validators=[
- RegexValidator(
- AMOUNT_REGEX, message="Could not find valid amount in state.."
- )
- ]
- )
- reserve_pub = forms.CharField()
- exchange_account_number = forms.IntegerField(min_value=1)
- sender_wiredetails = SenderWireDetailsField()