update 初始化项目

This commit is contained in:
P3ngSaM 2022-06-23 16:43:41 +08:00
commit 024d332bc5
8 changed files with 175 additions and 0 deletions

View File

View File

View File

@ -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": "标签名称"
}

View File

View File

View File

0
Modules/__init__.py Normal file
View File

100
Utils/ErrorUtil.py Normal file
View File

@ -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):
"""条件检查失败 抛出异常 接口返回失败原因和状态码"""