494 lines
13 KiB
Python
494 lines
13 KiB
Python
from app.config.setting import settings
|
||||
|
|
|
|||
|
|
|
|||
|
|
class CommonConstant:
|
|||
|
|
"""常用常量
|
|||
|
|
|
|||
|
|
HTTP: http请求
|
|||
|
|
HTTPS: https请求
|
|||
|
|
YES: 是否为系统默认(是)
|
|||
|
|
NO: 是否为系统默认(否)
|
|||
|
|
UNIQUE: 校验是否唯一的返回标识(是)
|
|||
|
|
NOT_UNIQUE: 校验是否唯一的返回标识(否)
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 域名相关
|
|||
|
|
HTTP = "http://"
|
|||
|
|
HTTPS = "https://"
|
|||
|
|
|
|||
|
|
# 系统标识
|
|||
|
|
YES = "Y"
|
|||
|
|
NO = "N"
|
|||
|
|
|
|||
|
|
# 唯一性校验
|
|||
|
|
UNIQUE = True
|
|||
|
|
NOT_UNIQUE = False
|
|||
|
|
|
|||
|
|
|
|||
|
|
class JobConstant:
|
|||
|
|
"""定时任务常量
|
|||
|
|
|
|||
|
|
JOB_ERROR_LIST: 定时任务禁止调用模块及违规字符串列表
|
|||
|
|
JOB_WHITE_LIST: 定时任务允许调用模块列表
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
JOB_ERROR_LIST = [
|
|||
|
|
"app",
|
|||
|
|
"config",
|
|||
|
|
"exceptions",
|
|||
|
|
"import ",
|
|||
|
|
"middlewares",
|
|||
|
|
"module_admin",
|
|||
|
|
"open(",
|
|||
|
|
"os.",
|
|||
|
|
"server",
|
|||
|
|
"sub_applications",
|
|||
|
|
"subprocess.",
|
|||
|
|
"sys.",
|
|||
|
|
"utils",
|
|||
|
|
"while ",
|
|||
|
|
"__import__",
|
|||
|
|
"'\"",
|
|||
|
|
"''",
|
|||
|
|
",",
|
|||
|
|
"?",
|
|||
|
|
":",
|
|||
|
|
";",
|
|||
|
|
"/",
|
|||
|
|
"|",
|
|||
|
|
"+",
|
|||
|
|
"-",
|
|||
|
|
"=",
|
|||
|
|
"~",
|
|||
|
|
"!",
|
|||
|
|
"#",
|
|||
|
|
"$",
|
|||
|
|
"%",
|
|||
|
|
"^",
|
|||
|
|
"&",
|
|||
|
|
"*",
|
|||
|
|
"<",
|
|||
|
|
">",
|
|||
|
|
"(",
|
|||
|
|
")",
|
|||
|
|
"[",
|
|||
|
|
"]",
|
|||
|
|
"{",
|
|||
|
|
"}",
|
|||
|
|
" ",
|
|||
|
|
]
|
|||
|
|
JOB_WHITE_LIST = ["function_task"]
|
|||
|
|
|
|||
|
|
|
|||
|
|
class GenConstant:
|
|||
|
|
"""代码生成常量
|
|||
|
|
|
|||
|
|
COLUMNTYPE_STR: 数据库字符串类型
|
|||
|
|
COLUMNTYPE_TEXT: 数据库文本类型
|
|||
|
|
COLUMNTYPE_TIME: 数据库时间类型
|
|||
|
|
COLUMNTYPE_GEOMETRY: 数据库字空间类型
|
|||
|
|
COLUMNTYPE_NUMBER: 数据库数字类型
|
|||
|
|
COLUMNNAME_NOT_EDIT: 页面不需要编辑字段
|
|||
|
|
COLUMNNAME_NOT_LIST: 页面不需要显示的列表字段
|
|||
|
|
COLUMNNAME_NOT_QUERY: 页面不需要查询字段
|
|||
|
|
BASE_ENTITY: Entity基类字段
|
|||
|
|
TREE_ENTITY: Tree基类字段
|
|||
|
|
HTML_INPUT: 文本框
|
|||
|
|
HTML_TEXTAREA: 文本域
|
|||
|
|
HTML_SELECT: 下拉框
|
|||
|
|
HTML_RADIO: 单选框
|
|||
|
|
HTML_CHECKBOX: 复选框
|
|||
|
|
HTML_DATETIME: 日期控件
|
|||
|
|
HTML_IMAGE_UPLOAD: 图片上传控件
|
|||
|
|
HTML_FILE_UPLOAD: 文件上传控件
|
|||
|
|
HTML_EDITOR: 富文本控件
|
|||
|
|
TYPE_DECIMAL: 高精度计算类型
|
|||
|
|
TYPE_DATE: 时间类型
|
|||
|
|
QUERY_LIKE: 模糊查询
|
|||
|
|
QUERY_EQ: 相等查询
|
|||
|
|
REQUIRE: 需要
|
|||
|
|
DB_TO_SQLALCHEMY_TYPE_MAPPING: 数据库类型与sqlalchemy类型映射
|
|||
|
|
DB_TO_PYTHON_TYPE_MAPPING: 数据库类型与python类型映射
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 数据库字符串类型
|
|||
|
|
COLUMNTYPE_STR = ["character varying", "varchar", "character", "char"] if settings.DATABASE_TYPE == "postgres" else ["char", "varchar", "nvarchar", "varchar2"]
|
|||
|
|
|
|||
|
|
# 数据库文本类型
|
|||
|
|
COLUMNTYPE_TEXT = ["text", "citext"] if settings.DATABASE_TYPE == "postgres" else ["tinytext", "text", "mediumtext", "longtext"]
|
|||
|
|
|
|||
|
|
# 数据库时间类型
|
|||
|
|
COLUMNTYPE_TIME = (
|
|||
|
|
[
|
|||
|
|
"date",
|
|||
|
|
"time",
|
|||
|
|
"time with time zone",
|
|||
|
|
"time without time zone",
|
|||
|
|
"timestamp",
|
|||
|
|
"timestamp with time zone",
|
|||
|
|
"timestamp without time zone",
|
|||
|
|
"interval",
|
|||
|
|
]
|
|||
|
|
if settings.DATABASE_TYPE == "postgres"
|
|||
|
|
else ["datetime", "time", "date", "timestamp"]
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 数据库字空间类型
|
|||
|
|
COLUMNTYPE_GEOMETRY = (
|
|||
|
|
["point", "line", "lseg", "box", "path", "polygon", "circle"]
|
|||
|
|
if settings.DATABASE_TYPE == "postgres"
|
|||
|
|
else [
|
|||
|
|
"geometry",
|
|||
|
|
"point",
|
|||
|
|
"linestring",
|
|||
|
|
"polygon",
|
|||
|
|
"multipoint",
|
|||
|
|
"multilinestring",
|
|||
|
|
"multipolygon",
|
|||
|
|
"geometrycollection",
|
|||
|
|
]
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 数据库数字类型
|
|||
|
|
COLUMNTYPE_NUMBER = [
|
|||
|
|
"tinyint",
|
|||
|
|
"smallint",
|
|||
|
|
"mediumint",
|
|||
|
|
"int",
|
|||
|
|
"number",
|
|||
|
|
"integer",
|
|||
|
|
"bit",
|
|||
|
|
"bigint",
|
|||
|
|
"float",
|
|||
|
|
"double",
|
|||
|
|
"decimal",
|
|||
|
|
"boolean",
|
|||
|
|
"bool",
|
|||
|
|
]
|
|||
|
|
# 页面不需要显示的添加字段
|
|||
|
|
COLUMNNAME_NOT_ADD_SHOW = ["created_time", "updated_time"]
|
|||
|
|
|
|||
|
|
# 页面不需要显示的编辑字段
|
|||
|
|
COLUMNNAME_NOT_EDIT_SHOW = ["uuid"]
|
|||
|
|
|
|||
|
|
# 页面不需要编辑字段
|
|||
|
|
COLUMNNAME_NOT_EDIT = ["id", "uuid", "created_time", "updated_time"]
|
|||
|
|
|
|||
|
|
# 页面不需要显示的列表字段
|
|||
|
|
COLUMNNAME_NOT_LIST = ["id", "uuid"]
|
|||
|
|
|
|||
|
|
# 页面不需要查询字段
|
|||
|
|
COLUMNNAME_NOT_QUERY = ["id", "uuid", "description"]
|
|||
|
|
|
|||
|
|
# Crud基类字段
|
|||
|
|
CRUD_COLUMN_NOT_EDIT = [
|
|||
|
|
"create_by",
|
|||
|
|
"description",
|
|||
|
|
"created_time",
|
|||
|
|
"updated_time",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 实体基类字段
|
|||
|
|
BASE_ENTITY = [
|
|||
|
|
"id",
|
|||
|
|
"uuid",
|
|||
|
|
"status",
|
|||
|
|
"description",
|
|||
|
|
"created_time",
|
|||
|
|
"updated_time",
|
|||
|
|
"created_id",
|
|||
|
|
"updated_id",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# Tree基类字段
|
|||
|
|
TREE_ENTITY = [
|
|||
|
|
"parent_name",
|
|||
|
|
"parent_id",
|
|||
|
|
"order",
|
|||
|
|
"ancestors",
|
|||
|
|
"children",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 文本框
|
|||
|
|
HTML_INPUT = "input"
|
|||
|
|
|
|||
|
|
# 文本域
|
|||
|
|
HTML_TEXTAREA = "textarea"
|
|||
|
|
|
|||
|
|
# 下拉框
|
|||
|
|
HTML_SELECT = "select"
|
|||
|
|
|
|||
|
|
# 单选框
|
|||
|
|
HTML_RADIO = "radio"
|
|||
|
|
|
|||
|
|
# 复选框
|
|||
|
|
HTML_CHECKBOX = "checkbox"
|
|||
|
|
|
|||
|
|
# 日期控件
|
|||
|
|
HTML_DATETIME = "datetime"
|
|||
|
|
|
|||
|
|
# 图片上传控件
|
|||
|
|
HTML_IMAGE_UPLOAD = "imageUpload"
|
|||
|
|
|
|||
|
|
# 文件上传控件
|
|||
|
|
HTML_FILE_UPLOAD = "fileUpload"
|
|||
|
|
|
|||
|
|
# 富文本控件
|
|||
|
|
HTML_EDITOR = "editor"
|
|||
|
|
|
|||
|
|
# 高精度计算类型
|
|||
|
|
TYPE_DECIMAL = "Decimal"
|
|||
|
|
|
|||
|
|
# 时间类型
|
|||
|
|
TYPE_DATE = ["date", "time", "datetime"]
|
|||
|
|
|
|||
|
|
# 模糊查询
|
|||
|
|
QUERY_LIKE = "LIKE"
|
|||
|
|
|
|||
|
|
# 相等查询
|
|||
|
|
QUERY_EQ = "EQ"
|
|||
|
|
|
|||
|
|
# 需要
|
|||
|
|
REQUIRE = True
|
|||
|
|
|
|||
|
|
# 数据库类型与sqlalchemy类型映射
|
|||
|
|
DB_TO_SQLALCHEMY = (
|
|||
|
|
{
|
|||
|
|
"boolean": "Boolean",
|
|||
|
|
"smallint": "SmallInteger",
|
|||
|
|
"integer": "Integer",
|
|||
|
|
"int4": "Integer",
|
|||
|
|
"bigint": "BigInteger",
|
|||
|
|
"real": "Float",
|
|||
|
|
"double precision": "Float",
|
|||
|
|
"numeric": "Numeric",
|
|||
|
|
"decimal": "Numeric",
|
|||
|
|
"character varying": "String",
|
|||
|
|
"varchar": "String",
|
|||
|
|
"character": "String",
|
|||
|
|
"text": "Text",
|
|||
|
|
"bytea": "LargeBinary",
|
|||
|
|
"date": "Date",
|
|||
|
|
"time": "Time",
|
|||
|
|
"time with time zone": "Time",
|
|||
|
|
"time without time zone": "Time",
|
|||
|
|
"timestamp": "DateTime",
|
|||
|
|
"timestamp with time zone": "DateTime",
|
|||
|
|
"timestamp without time zone": "DateTime",
|
|||
|
|
"interval": "Interval",
|
|||
|
|
"json": "JSON",
|
|||
|
|
"jsonb": "JSONB",
|
|||
|
|
"uuid": "Uuid",
|
|||
|
|
"inet": "INET",
|
|||
|
|
"cidr": "CIDR",
|
|||
|
|
"macaddr": "MACADDR",
|
|||
|
|
"point": "Geometry",
|
|||
|
|
"line": "Geometry",
|
|||
|
|
"lseg": "Geometry",
|
|||
|
|
"box": "Geometry",
|
|||
|
|
"path": "Geometry",
|
|||
|
|
"polygon": "Geometry",
|
|||
|
|
"circle": "Geometry",
|
|||
|
|
"bit": "Bit",
|
|||
|
|
"bit varying": "Bit",
|
|||
|
|
"tsvector": "TSVECTOR",
|
|||
|
|
"tsquery": "TSQUERY",
|
|||
|
|
"xml": "String",
|
|||
|
|
"array": "ARRAY",
|
|||
|
|
"composite": "JSON",
|
|||
|
|
"enum": "Enum",
|
|||
|
|
"range": "Range",
|
|||
|
|
"money": "Numeric",
|
|||
|
|
"pg_lsn": "BigInteger",
|
|||
|
|
"txid_snapshot": "String",
|
|||
|
|
"oid": "BigInteger",
|
|||
|
|
"regproc": "String",
|
|||
|
|
"regclass": "String",
|
|||
|
|
"regtype": "String",
|
|||
|
|
"regrole": "String",
|
|||
|
|
"regnamespace": "String",
|
|||
|
|
"int2vector": "ARRAY",
|
|||
|
|
"oidvector": "ARRAY",
|
|||
|
|
"pg_node_tree": "Text",
|
|||
|
|
}
|
|||
|
|
if settings.DATABASE_TYPE == "postgres"
|
|||
|
|
else {
|
|||
|
|
# 布尔语义仅 tinyint(1),其余 tinyint 在 get_sqlalchemy_type 中映射为 SmallInteger
|
|||
|
|
"TINYINT": "SmallInteger",
|
|||
|
|
# 数值类型
|
|||
|
|
"SMALLINT": "SmallInteger",
|
|||
|
|
"MEDIUMINT": "Integer",
|
|||
|
|
"INT": "Integer",
|
|||
|
|
"INTEGER": "Integer",
|
|||
|
|
"BIGINT": "BigInteger",
|
|||
|
|
"FLOAT": "Float",
|
|||
|
|
"DOUBLE": "Float",
|
|||
|
|
"DECIMAL": "DECIMAL",
|
|||
|
|
"BIT": "Integer",
|
|||
|
|
"NUMERIC": "Numeric",
|
|||
|
|
# 日期和时间类型
|
|||
|
|
"DATE": "Date",
|
|||
|
|
"TIME": "Time",
|
|||
|
|
"DATETIME": "DateTime",
|
|||
|
|
"TIMESTAMP": "TIMESTAMP",
|
|||
|
|
"YEAR": "Integer",
|
|||
|
|
# 字符串类型
|
|||
|
|
"CHAR": "CHAR",
|
|||
|
|
"VARCHAR": "String",
|
|||
|
|
"TINYTEXT": "Text",
|
|||
|
|
"TEXT": "Text",
|
|||
|
|
"MEDIUMTEXT": "Text",
|
|||
|
|
"LONGTEXT": "Text",
|
|||
|
|
"BINARY": "BINARY",
|
|||
|
|
"VARBINARY": "VARBINARY",
|
|||
|
|
"TINYBLOB": "LargeBinary",
|
|||
|
|
"BLOB": "LargeBinary",
|
|||
|
|
"MEDIUMBLOB": "LargeBinary",
|
|||
|
|
"LONGBLOB": "LargeBinary",
|
|||
|
|
# 枚举和集合类型
|
|||
|
|
"ENUM": "Enum",
|
|||
|
|
"SET": "String",
|
|||
|
|
# JSON 类型
|
|||
|
|
"JSON": "JSON",
|
|||
|
|
# 空间数据类型(需要扩展支持,如 GeoAlchemy2)
|
|||
|
|
"GEOMETRY": "Geometry", # 需要安装 geoalchemy2
|
|||
|
|
"POINT": "Geometry",
|
|||
|
|
"LINESTRING": "Geometry",
|
|||
|
|
"POLYGON": "Geometry",
|
|||
|
|
"MULTIPOINT": "Geometry",
|
|||
|
|
"MULTILINESTRING": "Geometry",
|
|||
|
|
"MULTIPOLYGON": "Geometry",
|
|||
|
|
"GEOMETRYCOLLECTION": "Geometry",
|
|||
|
|
# 其他类型
|
|||
|
|
"BOOL": "Boolean",
|
|||
|
|
"UUID": "String",
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 数据库类型与python类型映射
|
|||
|
|
DB_TO_PYTHON = {
|
|||
|
|
# MySQL 整数类型
|
|||
|
|
"tinyint": "int",
|
|||
|
|
"smallint": "int",
|
|||
|
|
"mediumint": "int",
|
|||
|
|
"int": "int",
|
|||
|
|
"integer": "int",
|
|||
|
|
"bigint": "int",
|
|||
|
|
# MySQL 浮点类型
|
|||
|
|
"float": "float",
|
|||
|
|
"double": "float",
|
|||
|
|
"decimal": "Decimal",
|
|||
|
|
"numeric": "Decimal",
|
|||
|
|
# MySQL 字符串类型
|
|||
|
|
"char": "str",
|
|||
|
|
"varchar": "str",
|
|||
|
|
"tinytext": "str",
|
|||
|
|
"text": "str",
|
|||
|
|
"mediumtext": "str",
|
|||
|
|
"longtext": "str",
|
|||
|
|
# MySQL 二进制类型
|
|||
|
|
"binary": "bytes",
|
|||
|
|
"varbinary": "bytes",
|
|||
|
|
"tinyblob": "bytes",
|
|||
|
|
"blob": "bytes",
|
|||
|
|
"mediumblob": "bytes",
|
|||
|
|
"longblob": "bytes",
|
|||
|
|
# MySQL 日期时间类型
|
|||
|
|
"date": "date",
|
|||
|
|
"time": "time",
|
|||
|
|
"datetime": "datetime",
|
|||
|
|
"timestamp": "datetime",
|
|||
|
|
"year": "int",
|
|||
|
|
# MySQL 其他类型
|
|||
|
|
"json": "dict",
|
|||
|
|
"enum": "str",
|
|||
|
|
"set": "str",
|
|||
|
|
"bit": "int",
|
|||
|
|
# MySQL 空间数据类型
|
|||
|
|
"geometry": "bytes",
|
|||
|
|
"linestring": "bytes",
|
|||
|
|
"multipoint": "bytes",
|
|||
|
|
"multilinestring": "bytes",
|
|||
|
|
"multipolygon": "bytes",
|
|||
|
|
"geometrycollection": "bytes",
|
|||
|
|
# PostgreSQL 整数类型
|
|||
|
|
"int2": "int",
|
|||
|
|
"int4": "int",
|
|||
|
|
"int8": "int",
|
|||
|
|
# PostgreSQL 浮点类型
|
|||
|
|
"real": "float",
|
|||
|
|
"double precision": "float",
|
|||
|
|
"float8": "float",
|
|||
|
|
# PostgreSQL 字符串类型
|
|||
|
|
"character": "str",
|
|||
|
|
"character varying": "str",
|
|||
|
|
"citext": "str",
|
|||
|
|
# PostgreSQL 二进制类型
|
|||
|
|
"bytea": "bytes",
|
|||
|
|
# PostgreSQL 日期时间类型
|
|||
|
|
"time with time zone": "time",
|
|||
|
|
"timetz": "time",
|
|||
|
|
"time without time zone": "time",
|
|||
|
|
"timestamptz": "datetime",
|
|||
|
|
"timestamp with time zone": "datetime",
|
|||
|
|
"timestamp without time zone": "datetime",
|
|||
|
|
"interval": "timedelta",
|
|||
|
|
# PostgreSQL 布尔类型
|
|||
|
|
"boolean": "bool",
|
|||
|
|
"bool": "bool",
|
|||
|
|
# PostgreSQL JSON类型
|
|||
|
|
"jsonb": "dict",
|
|||
|
|
# PostgreSQL 其他类型
|
|||
|
|
"uuid": "str",
|
|||
|
|
"inet": "str",
|
|||
|
|
"cidr": "str",
|
|||
|
|
"macaddr": "str",
|
|||
|
|
# PostgreSQL 几何类型
|
|||
|
|
"point": "list",
|
|||
|
|
"line": "list",
|
|||
|
|
"lseg": "list",
|
|||
|
|
"box": "list",
|
|||
|
|
"path": "list",
|
|||
|
|
"polygon": "list",
|
|||
|
|
"circle": "list",
|
|||
|
|
# PostgreSQL 位类型
|
|||
|
|
"bit varying": "int",
|
|||
|
|
"varbit": "int",
|
|||
|
|
# PostgreSQL 文本搜索类型
|
|||
|
|
"tsvector": "str",
|
|||
|
|
"tsquery": "str",
|
|||
|
|
# PostgreSQL XML类型
|
|||
|
|
"xml": "str",
|
|||
|
|
# PostgreSQL 数组类型
|
|||
|
|
"array": "list",
|
|||
|
|
# PostgreSQL 范围类型
|
|||
|
|
"range": "list",
|
|||
|
|
"int4range": "list",
|
|||
|
|
"int8range": "list",
|
|||
|
|
"tsrange": "list",
|
|||
|
|
"tstzrange": "list",
|
|||
|
|
"daterange": "list",
|
|||
|
|
# PostgreSQL 货币类型
|
|||
|
|
"money": "Decimal",
|
|||
|
|
# PostgreSQL 对象标识符类型
|
|||
|
|
"oid": "int",
|
|||
|
|
"regproc": "str",
|
|||
|
|
"regclass": "str",
|
|||
|
|
"regtype": "str",
|
|||
|
|
"regrole": "str",
|
|||
|
|
"regnamespace": "str",
|
|||
|
|
# PostgreSQL 向量类型
|
|||
|
|
"int2vector": "list",
|
|||
|
|
"oidvector": "list",
|
|||
|
|
# PostgreSQL 其他内部类型
|
|||
|
|
"pg_lsn": "int",
|
|||
|
|
"txid_snapshot": "str",
|
|||
|
|
"pg_node_tree": "str",
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
# API 日期 / 时间 / 日期时间统一展示(validator、jsonable_response_content、文档约定一致)
|
|||
|
|
DATE_DISPLAY_FMT = "%Y-%m-%d"
|
|||
|
|
TIME_DISPLAY_FMT = "%H:%M:%S"
|
|||
|
|
DATETIME_DISPLAY_FMT = "%Y-%m-%d %H:%M:%S"
|