summaryrefslogtreecommitdiff
path: root/talerbank/app/schemas.py
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-08-28 21:36:51 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-08-28 21:36:51 +0200
commit4e569d7584c6a128ab685fc9ca0539139df8bca4 (patch)
treebe604a5580f8a6096827fa02240ca466674c8777 /talerbank/app/schemas.py
parentd95ade12b327e36994d628722be05c4b101c2eae (diff)
downloadbank-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.py114
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()
-
-