from schwifty import IBAN, BIC import datetime def valid_iban(field, value, error): try: IBAN(value) return True except ValueError: error(field, 'not a valid IBAN') def valid_bic(field, value, error): try: BIC(value) return True except ValueError: error(field, 'not a valid BIC') def iso_date(field, value, error): try: datetime.datetime.strptime(value, "%Y-%m-%d") return True except ValueError: error(field, 'not a valid ISO 8601 date') def valid_money_amount(field, value, error): try: # value is string, check formatting by parsing as float float(value) return True except (ValueError, TypeError): error(field, 'not a valid money value')