mehr und komplexe schemata
This commit is contained in:
parent
1cc05cd5e6
commit
0376228d30
1 changed files with 48 additions and 7 deletions
|
@ -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'
|
||||||
},
|
},
|
||||||
|
@ -64,13 +71,47 @@ document = {
|
||||||
'timestamp': '2020-03-25T23:58:11',
|
'timestamp': '2020-03-25T23:58:11',
|
||||||
'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)
|
Loading…
Reference in a new issue