101 lines
2.0 KiB
Python
101 lines
2.0 KiB
Python
from datetime import datetime
|
|
from datetime import timedelta
|
|
from ipaddress import IPv4Address
|
|
|
|
|
|
def is_valid_date(v, **kwargs):
|
|
try:
|
|
date = datetime(int(v[:4]),
|
|
int(v[5:7]),
|
|
int(v[8:10]),
|
|
int(v[11:13]),
|
|
int(v[14:16]),
|
|
int(v[17:])
|
|
)
|
|
zone_offset = kwargs.get('#zone_offset', 8)
|
|
return (date - timedelta(hours=zone_offset)).strftime("%Y-%m-%d %H:%M:%S")
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_int(v, **kwargs):
|
|
try:
|
|
return int(v)
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_srt(v, **kwargs):
|
|
try:
|
|
return str(v)
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_float(v, **kwargs):
|
|
try:
|
|
return float(v)
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_bool(v, **kwargs):
|
|
try:
|
|
return bool(v)
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_array(v, **kwargs):
|
|
try:
|
|
return [str(i) for i in v]
|
|
except:
|
|
return None
|
|
|
|
|
|
def is_valid_ipv4(v, **kwargs):
|
|
try:
|
|
return str(IPv4Address(v))
|
|
except:
|
|
return None
|
|
|
|
|
|
TYPE_CK2PY = {
|
|
"DateTime('UTC')": is_valid_date,
|
|
"Nullable(DateTime('UTC'))": is_valid_date,
|
|
"DateTime()": is_valid_date,
|
|
|
|
"Nullable(IPv4)": is_valid_ipv4,
|
|
"IPv4": is_valid_ipv4,
|
|
|
|
"String": is_valid_srt,
|
|
"Nullable(String)": is_valid_srt,
|
|
|
|
"Nullable(UInt8)": is_valid_int,
|
|
"UInt8": is_valid_srt,
|
|
|
|
"Nullable(Int8)": is_valid_int,
|
|
"Int8": is_valid_srt,
|
|
|
|
"Nullable(UInt16)": is_valid_int,
|
|
"UInt16": is_valid_srt,
|
|
|
|
"Nullable(Int16)": is_valid_int,
|
|
"Int16": is_valid_srt,
|
|
|
|
"Nullable(UInt32)": is_valid_int,
|
|
"UInt32": is_valid_srt,
|
|
|
|
"Nullable(UInt64)": is_valid_int,
|
|
"UInt64": is_valid_srt,
|
|
|
|
"Nullable(Int64)": is_valid_int,
|
|
"Int64": is_valid_srt,
|
|
|
|
"Array(String)": is_valid_array,
|
|
|
|
"Nullable(Float)": is_valid_float,
|
|
"Float": is_valid_float,
|
|
|
|
}
|