mehr und komplexe schemata

This commit is contained in:
David Kilias 2020-12-02 23:30:31 +01:00
parent 1cc05cd5e6
commit 0376228d30

View file

@ -23,7 +23,14 @@ def iso_date(field, value, error):
datetime.datetime.strptime(value, "%Y-%m-%d") datetime.datetime.strptime(value, "%Y-%m-%d")
return True return True
except ValueError: except ValueError:
error(field, 'not a valid IDO 8601 date') error(field, 'not a valid ISO 8601 date')
def valid_money_amount(field, value, error):
try:
float(value)
return True
except (ValueError, TypeError):
error(field, 'not a valid money value')
document = { document = {
'finanzdaten': 'finanzdaten':
@ -41,7 +48,7 @@ document = {
'mitgliedsbeitrag': '30', 'mitgliedsbeitrag': '30',
'scan-antrag': '', 'scan-antrag': '',
'schliessberechtigung': 'Ja', 'schliessberechtigung': 'Ja',
'spendenbeitrag': '', 'spendenbeitrag': '0',
'status': 'V', 'status': 'V',
'von': '2012-01-01' 'von': '2012-01-01'
}, },
@ -65,12 +72,46 @@ document = {
'id': '6af68' 'id': '6af68'
} }
schema_fin={'bic': {'type': 'string', 'check_with': valid_bic}, schema_fin={
'iban': {'type': 'string', 'check_with': valid_iban}, 'bic': {
'issuance': {'type': 'string', 'check_with': iso_date}, 'type': 'string',
'required': True,
'check_with': valid_bic},
'iban': {
'type': 'string',
'required': True,
'check_with': valid_iban},
'issuance': {
'type': 'string',
'required': True,
'check_with': iso_date},
'reference': {'type': 'string'}, 'reference': {'type': 'string'},
'scan-sepa-mandate': {'type': 'string'}, 'scan-sepa-mandate': {'type': 'string'},
'holder': {'type': 'string'}} 'holder': {'type': 'string'}}
schema_member={'bis': {
'type': 'string',
'oneof': [{'check_with': iso_date},{'empty': True}]},
'mitgliedsbeitrag': {
'type': 'string',
'check_with': valid_money_amount},
'scan-antrag': {'type': 'string'},
'schliessberechtigung': {
'type': 'string',
'allowed': ['Ja', 'Nein', 'J', 'N', 'j', 'n', 'y', 'Y']},
'spendenbeitrag': {
'type': 'string',
'check_with': valid_money_amount},
'status': {
'type': 'string',
'allowed': ['V', 'E', 'F']},
'von': {
'type': 'string',
'required': True,
'check_with': iso_date}}
v = cerberus.Validator() v = cerberus.Validator()
v.validate(document['finanzdaten'], schema_fin) print(v.validate(document['finanzdaten'], schema_fin))
print(v.errors)
print(v.validate(document['mitgliederdaten'], schema_member))
print(v.errors)