update 初始化项目
This commit is contained in:
commit
024d332bc5
|
@ -0,0 +1,75 @@
|
|||
from Utils.ObjUtil import SpecObject
|
||||
from Utils.ValidateUtil import ValidateAttr
|
||||
|
||||
|
||||
class IndexObj(SpecObject):
|
||||
"""指标"""
|
||||
|
||||
class Parameter(SpecObject):
|
||||
"""传入参数"""
|
||||
|
||||
class DataDind(SpecObject):
|
||||
"""数据绑定"""
|
||||
|
||||
class Path(SpecObject):
|
||||
"""路径"""
|
||||
database = ValidateAttr(field="", type=str)
|
||||
sheet = ValidateAttr(field="sheet", type=str)
|
||||
field = ValidateAttr(field="field", type=str)
|
||||
|
||||
fields_map = {
|
||||
"database": "库",
|
||||
"sheet": "表",
|
||||
"field": "字段"
|
||||
}
|
||||
|
||||
class Site(SpecObject):
|
||||
"""设置"""
|
||||
type = ValidateAttr(field="type", type=str)
|
||||
transform = ValidateAttr(field="transform", type=str)
|
||||
|
||||
fields_map = {
|
||||
"type": "类型",
|
||||
"transform": "转换",
|
||||
}
|
||||
|
||||
path = ValidateAttr(field="path", type=Path)
|
||||
site = ValidateAttr(field="site", instance_list=Site)
|
||||
|
||||
fields_map = {
|
||||
"path": "路径",
|
||||
"site": "设置"
|
||||
}
|
||||
|
||||
param = ValidateAttr(field="param", type=str)
|
||||
data_bind = ValidateAttr(field="data_bind", type=DataDind)
|
||||
describe = ValidateAttr(field="describe", type=str)
|
||||
|
||||
fields_map = {
|
||||
"param": "参数",
|
||||
"data_bind": "数据绑定",
|
||||
"describe": "说明"
|
||||
}
|
||||
|
||||
index_id = ValidateAttr(field='index_id', type=str)
|
||||
index_field = ValidateAttr(field='index_field', type=str)
|
||||
func_field = ValidateAttr(field='func_field', type=str)
|
||||
parameter = ValidateAttr(field='parameter', instance_list=Parameter)
|
||||
|
||||
fields_map = {
|
||||
"index_id": "指标ID",
|
||||
"index_field": "指标名称",
|
||||
"func_field": "绑定函数",
|
||||
"parameter": "传入参数"
|
||||
}
|
||||
|
||||
|
||||
class TagObj(SpecObject):
|
||||
"""标签"""
|
||||
tag_id = ValidateAttr(field='tag_id', type=str)
|
||||
tag_field = ValidateAttr(field='tag_field', type=str)
|
||||
|
||||
fields_map = {
|
||||
"tag_id": "标签ID",
|
||||
"tag_field": "标签名称"
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
import time
|
||||
import traceback
|
||||
|
||||
from flask import request
|
||||
from werkzeug.exceptions import BadRequest
|
||||
|
||||
from DBHelper.MongoHelperInstance import DB_TEST
|
||||
|
||||
|
||||
def get_req_detail(req, param_type):
|
||||
"""
|
||||
获取请求参数信息
|
||||
若异常请求则返回空字符串
|
||||
"""
|
||||
try:
|
||||
if param_type == 'args':
|
||||
return req.args.__str__()
|
||||
elif param_type == 'json':
|
||||
return req.json.__str__()
|
||||
else:
|
||||
return ''
|
||||
except BadRequest:
|
||||
return ''
|
||||
|
||||
|
||||
class JustThrowError(RuntimeError):
|
||||
"""自定义抛出异常信息"""
|
||||
|
||||
def __init__(self, error_info):
|
||||
self.error_info = error_info
|
||||
|
||||
def __str__(self):
|
||||
return self.error_info
|
||||
|
||||
|
||||
class APIReturnError(RuntimeError):
|
||||
"""接口返回异常信息"""
|
||||
def __init__(self, error_info, status_code):
|
||||
self.error_info = error_info # 异常信息
|
||||
self.status_code = status_code # 状态码
|
||||
|
||||
def __str__(self):
|
||||
return self.error_info
|
||||
|
||||
|
||||
class AttrCheckError(RuntimeError):
|
||||
"""属性检查异常"""
|
||||
|
||||
def __init__(self, error_info):
|
||||
self.error_info = error_info
|
||||
|
||||
def __str__(self):
|
||||
return self.error_info
|
||||
|
||||
|
||||
class CheckFailed(RuntimeError):
|
||||
"""检查异常"""
|
||||
|
||||
def __init__(self, failed_info, status_code):
|
||||
self.failed_info = failed_info # 失败信息
|
||||
self.status_code = status_code # 状态码
|
||||
|
||||
def __str__(self):
|
||||
return self.failed_info
|
||||
|
||||
def log_error(self):
|
||||
|
||||
info = {
|
||||
"ip": request.remote_addr,
|
||||
"request_info": {
|
||||
"path": request.path,
|
||||
"method": request.method,
|
||||
"headers": request.headers.__str__(),
|
||||
"args": get_req_detail(request, 'args'),
|
||||
"json": get_req_detail(request, 'json')
|
||||
},
|
||||
"traceback": traceback.format_exc(),
|
||||
"exception": type(self).__name__,
|
||||
"is_solved": "no",
|
||||
"time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
}
|
||||
|
||||
DB_TEST.insert_single_data(
|
||||
"日志",
|
||||
"异常日志",
|
||||
info
|
||||
)
|
||||
|
||||
|
||||
class LogConditionCheckFailed(CheckFailed):
|
||||
"""直接记录检查异常"""
|
||||
|
||||
def __init__(self, failed_info, status_code):
|
||||
self.failed_info = failed_info # 失败信息
|
||||
self.status_code = status_code # 状态码
|
||||
self.log_error()
|
||||
|
||||
|
||||
class ReturnConditionCheckFailed(CheckFailed):
|
||||
"""条件检查失败 抛出异常 接口返回失败原因和状态码"""
|
Loading…
Reference in New Issue