lesscode-flask 0.0.99__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/PKG-INFO +1 -1
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/__init__.py +1 -1
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/app.py +21 -2
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/helpers.py +14 -4
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask.egg-info/PKG-INFO +1 -1
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/README.md +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/db/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/db/datasource.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/db/executor.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/export_data/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/export_data/data_download_handler.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/log/access_log_handler.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/model/access_log.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/model/base_model.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/model/parameterized_query.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/model/response_result.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/model/user.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/service/access_log_service.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/service/base_service.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/setting/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/setup/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/static/swagger.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/decorator/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/decorator/cache.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/decorator/swagger.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/file/file_exporter.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/oss/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/redis/redis_helper.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/request/request.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/thread/thread_utils.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/wsgi.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask.egg-info/SOURCES.txt +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask.egg-info/dependency_links.txt +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask.egg-info/requires.txt +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask.egg-info/top_level.txt +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/clickhouse.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/elasticsearch.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/kingbase.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/mysql.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/query_runner/pg.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/settings/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/settings/helpers.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/utils/__init__.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/redash/utils/requests_session.py +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/setup.cfg +0 -0
- {lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/setup.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import copy
|
|
3
4
|
import json
|
|
4
5
|
import logging
|
|
6
|
+
import os
|
|
5
7
|
import sys
|
|
6
8
|
import time
|
|
7
9
|
import traceback
|
|
8
10
|
import typing as t
|
|
9
|
-
from importlib import import_module
|
|
10
11
|
|
|
11
12
|
from flask import Flask, typing as ft, Response
|
|
12
13
|
from flask.globals import request_ctx, request
|
|
@@ -20,6 +21,7 @@ from lesscode_flask.setup import setup_blueprint, setup_logging, setup_query_run
|
|
|
20
21
|
from lesscode_flask.utils.helpers import inject_args, generate_uuid, app_config
|
|
21
22
|
from lesscode_flask.utils.json.NotSortJSONProvider import NotSortJSONProvider
|
|
22
23
|
from lesscode_flask.utils.redis.redis_helper import RedisHelper
|
|
24
|
+
from lesscode_flask.utils.swagger.swagger_util import generate_openapi_spec
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
# import collections.abc as cabc
|
|
@@ -90,7 +92,7 @@ class Lesscoder(Flask):
|
|
|
90
92
|
# duration = time.time() - start_time
|
|
91
93
|
# 100 为自定义 'ACCESS' 的日志级别标识
|
|
92
94
|
logging.log(100, "访问日志", {"request_id": request_id, "start_time": start_time, "end_time": time.time(),
|
|
93
|
-
|
|
95
|
+
"status_code": response.status_code})
|
|
94
96
|
return response
|
|
95
97
|
|
|
96
98
|
def dispatch_request(self) -> ft.ResponseReturnValue:
|
|
@@ -160,9 +162,26 @@ class Lesscoder(Flask):
|
|
|
160
162
|
return ResponseResult.make_response(message=str(e), data=str(e), http_code=500, status_code="500")
|
|
161
163
|
|
|
162
164
|
|
|
165
|
+
def gen_swagger_json_file(app):
|
|
166
|
+
swagger_json = generate_openapi_spec(app)
|
|
167
|
+
_port = app.config.get("PORT") or 5004
|
|
168
|
+
_swagger_json = copy.deepcopy(swagger_json)
|
|
169
|
+
_swagger_json["servers"] = app.config.get("SWAGGER_SERVERS", []) if app.config.get("SWAGGER_SERVERS", []) else [
|
|
170
|
+
{"url": f"http://127.0.0.1:{_port}", "description": "本地环境"}]
|
|
171
|
+
project_path = os.path.abspath(os.path.dirname(sys.argv[0]))
|
|
172
|
+
static_path = os.path.join(project_path, "static")
|
|
173
|
+
swagger_json_path = os.path.join(static_path, "swagger.json")
|
|
174
|
+
if not os.path.exists(static_path):
|
|
175
|
+
os.mkdir(static_path)
|
|
176
|
+
if not os.path.exists(swagger_json_path):
|
|
177
|
+
with open(swagger_json_path, "w", encoding="utf-8") as f:
|
|
178
|
+
f.write(json.dumps(_swagger_json, indent=4, ensure_ascii=False))
|
|
179
|
+
|
|
180
|
+
|
|
163
181
|
def create_app():
|
|
164
182
|
app = Lesscoder()
|
|
165
183
|
app.json = NotSortJSONProvider(app) # 设置自定义的 JSON provider
|
|
166
184
|
with app.app_context():
|
|
167
185
|
app.setup()
|
|
186
|
+
gen_swagger_json_file(app)
|
|
168
187
|
return app
|
|
@@ -49,8 +49,13 @@ def build_tree(data, parent: str = "parent_id"):
|
|
|
49
49
|
- tree: 转换后的树形结构数据列表。
|
|
50
50
|
"""
|
|
51
51
|
# 创建一个字典来快速查找节点
|
|
52
|
-
node_map = {
|
|
53
|
-
|
|
52
|
+
node_map = {}
|
|
53
|
+
_sort_key = 0
|
|
54
|
+
# 为数据增加一个_sort_key属性用于排序
|
|
55
|
+
for item in data:
|
|
56
|
+
item['_sort_key'] = _sort_key
|
|
57
|
+
node_map[item['id']] = item
|
|
58
|
+
_sort_key += 1
|
|
54
59
|
# 初始化根节点列表
|
|
55
60
|
tree_data = []
|
|
56
61
|
|
|
@@ -66,9 +71,14 @@ def build_tree(data, parent: str = "parent_id"):
|
|
|
66
71
|
# 如果没有父节点,则当前节点为根节点
|
|
67
72
|
tree_data.append(item)
|
|
68
73
|
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
def sort_tree(data):
|
|
75
|
+
data.sort(key=lambda x: x['_sort_key'])
|
|
76
|
+
for child in data:
|
|
77
|
+
if 'children' in child:
|
|
78
|
+
sort_tree(child['children'])
|
|
71
79
|
|
|
80
|
+
sort_tree(tree_data)
|
|
81
|
+
return tree_data
|
|
72
82
|
def generate_uuid():
|
|
73
83
|
"""
|
|
74
84
|
生成UUID
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/export_data/data_download_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/json/NotSortJSONProvider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.0.99 → lesscode_flask-0.1.1}/lesscode_flask/utils/swagger/swagger_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|