diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-08-28 21:36:51 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-08-28 21:36:51 +0200 |
commit | 4e569d7584c6a128ab685fc9ca0539139df8bca4 (patch) | |
tree | be604a5580f8a6096827fa02240ca466674c8777 /talerbank/app/schemas.py | |
parent | d95ade12b327e36994d628722be05c4b101c2eae (diff) | |
download | bank-4e569d7584c6a128ab685fc9ca0539139df8bca4.tar.gz bank-4e569d7584c6a128ab685fc9ca0539139df8bca4.tar.bz2 bank-4e569d7584c6a128ab685fc9ca0539139df8bca4.zip |
format code with yapf
Diffstat (limited to 'talerbank/app/schemas.py')
-rw-r--r-- | talerbank/app/schemas.py | 114 |
1 files changed, 76 insertions, 38 deletions
diff --git a/talerbank/app/schemas.py b/talerbank/app/schemas.py index ee79abe..6817a33 100644 --- a/talerbank/app/schemas.py +++ b/talerbank/app/schemas.py @@ -26,7 +26,6 @@ from django import forms from django.core.validators import RegexValidator from urllib.parse import urlparse - ## # Constant value for the biggest number the bank handles. # This value is just equal to the biggest number that JavaScript @@ -35,11 +34,11 @@ from urllib.parse import urlparse # such definitions ? UINT64_MAX = (2**64) - 1 - ## # Pattern for amounts, plain RegEx. AMOUNT_REGEX = "^[A-Za-z0-9_-]+:([0-9]+)\.?([0-9]+)?$" + ## # Exception class to be raised when a expected URL parameter # is not found. @@ -55,6 +54,7 @@ class InvalidSession(ValueError): self.http_status_code = http_status_code super().__init__() + ## # Exception class to be raised when a JSON # object does not respect a specification. @@ -72,6 +72,7 @@ class JSONFieldException(ValueError): self.http_status_code = http_status_code super().__init__() + ## # Exception class to be raised when at least one expected URL # parameter is either not found or malformed. @@ -88,14 +89,19 @@ class URLParamValidationError(ValueError): self.http_status_code = http_status_code super().__init__() + class AuthForm(forms.Form): type = forms.CharField( - validators=[RegexValidator( - "^basic$", - message="Only 'basic' method provided for now")]) + validators=[ + RegexValidator( + "^basic$", message="Only 'basic' method provided for now" + ) + ] + ) # Just any value is good here. - data = forms.Field(required=False) + data = forms.Field(required=False) + class AuthField(forms.Field): ## @@ -109,8 +115,8 @@ class AuthField(forms.Field): def validate(self, value): af = AuthForm(value) if not af.is_valid(): - raise ValidationError( - json.dumps(af.errors.as_json())) + raise ValidationError(json.dumps(af.errors.as_json())) + class RejectData(forms.Form): auth = AuthField() @@ -118,50 +124,68 @@ class RejectData(forms.Form): row_id = forms.IntegerField() account_number = forms.IntegerField() + class AddIncomingData(forms.Form): auth = AuthField() - amount = forms.CharField(validators=[ - RegexValidator(AMOUNT_REGEX, - message="Format CURRENCY:X[.Y] not respected")]) + 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() + ## # Form specification that validates GET parameters from a # /history request. class HistoryParamsBase(forms.Form): auth = forms.CharField( - validators=[RegexValidator( - "^basic$", - message="Only 'basic' is allowed")]) + validators=[ + RegexValidator("^basic$", message="Only 'basic' is allowed") + ] + ) cancelled = forms.CharField( required=False, empty_value="show", - validators=[RegexValidator( - "^(omit|show)$", - message="Only 'omit' or 'show' are valid")]) + validators=[ + RegexValidator( + "^(omit|show)$", message="Only 'omit' or 'show' are valid" + ) + ] + ) ordering = forms.CharField( required=False, empty_value="descending", - validators=[RegexValidator( - "^(ascending|descending)$", - message="Only 'ascending' or 'descending' are valid")]) + validators=[ + RegexValidator( + "^(ascending|descending)$", + message="Only 'ascending' or 'descending' are valid" + ) + ] + ) direction = forms.CharField( - validators=[RegexValidator( - "^(debit|credit|both|cancel\+|cancel-)$", - message="Only: debit/credit/both/cancel+/cancel-")]) + validators=[ + RegexValidator( + "^(debit|credit|both|cancel\+|cancel-)$", + message="Only: debit/credit/both/cancel+/cancel-" + ) + ] + ) # FIXME: adjust min/max values. account_number = forms.IntegerField(required=False) + class HistoryParams(HistoryParamsBase): - def clean_start(self): - delta = self.cleaned_data.get("delta") + delta = self.cleaned_data.get("delta") start = self.cleaned_data.get("start") if None == start: return 0 if 0 <= delta else UINT64_MAX @@ -171,11 +195,13 @@ class HistoryParams(HistoryParamsBase): delta = forms.IntegerField() start = forms.IntegerField(required=False) + class HistoryRangeParams(HistoryParamsBase): # FIXME: adjust min/max values. end = forms.IntegerField() start = forms.IntegerField() + class PaytoField(forms.Field): def __init__(self, **kwargs): super().__init__(**kwargs) @@ -195,46 +221,58 @@ class PaytoField(forms.Field): if "payto" != wire_uri.scheme: 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")]) + 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 PinTanParams(forms.Form): amount_currency = forms.CharField( - validators=[RegexValidator( - "^[A-Z]+$", - message="Currency is all upper case")]) + 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() bank_url = forms.URLField() account_number = forms.IntegerField(min_value=1) + class SenderWireDetailsField(forms.Field): def to_python(self, value): return value + def validate(self, value): swd = SenderWireDetails(value) if not swd.is_valid(): - raise ValidationError( - json.dumps(swd.errors.as_json())) + 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..")]) + 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() - - |