MCPcopy
hub / github.com/coleifer/sqlite-web / minimal_validate_field

Function minimal_validate_field

sqlite_web/sqlite_web.py:856–893  ·  view source on GitHub ↗
(field, value)

Source from the content-addressed store, hash-verified

854 total_rows=total_rows)
855
856def minimal_validate_field(field, value):
857 if value.lower().strip() == 'null':
858 value = None
859 if value is None and not field.null:
860 return 'NULL', 'Column does not allow NULL values.'
861 if value is None:
862 return None, None
863 if isinstance(field, IntegerField):
864 try:
865 _ = int(value)
866 except Exception:
867 return value, 'Value is not a number.'
868 elif isinstance(field, FloatField):
869 try:
870 _ = float(value)
871 except Exception:
872 return value, 'Value is not a numeric/real.'
873 elif isinstance(field, BooleanField):
874 if value.lower() not in ('1', '0', 'true', 'false', 't', 'f'):
875 return value, 'Value must be 1, 0, true, false, t or f.'
876 value = True if value.lower() in ('1', 't', 'true') else False
877 elif isinstance(field, BlobField):
878 if app.config['BLOB_AS_BASE64']:
879 try:
880 value = base64.b64decode(value)
881 except Exception as exc:
882 return value, 'Value must be base64-encoded binary data.'
883 else:
884 try:
885 value = bytes.fromhex(value)
886 except Exception as exc:
887 return value, 'Value must be valid hex representation.'
888 try:
889 field.db_value(value)
890 except Exception as exc:
891 return value, str(exc)
892
893 return value, None
894
895@app.route('/<table>/insert/', methods=['GET', 'POST'])
896@require_table

Callers 2

table_insertFunction · 0.85
table_updateFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected