Kevin Hu
commited on
Commit
·
af9653e
1
Parent(s):
59250e8
refactor api util (#2849)
Browse files### What problem does this PR solve?
### Type of change
- [x] Refactoring
- api/apps/api_app.py +4 -9
- api/apps/system_app.py +2 -4
- api/utils/api_utils.py +13 -5
api/apps/api_app.py
CHANGED
@@ -22,7 +22,7 @@ from api.db.services.llm_service import TenantLLMService
|
|
22 |
from flask_login import login_required, current_user
|
23 |
|
24 |
from api.db import FileType, LLMType, ParserType, FileSource
|
25 |
-
from api.db.db_models import APIToken,
|
26 |
from api.db.services import duplicate_name
|
27 |
from api.db.services.api_service import APITokenService, API4ConversationService
|
28 |
from api.db.services.dialog_service import DialogService, chat
|
@@ -34,23 +34,18 @@ from api.db.services.task_service import queue_tasks, TaskService
|
|
34 |
from api.db.services.user_service import UserTenantService
|
35 |
from api.settings import RetCode, retrievaler
|
36 |
from api.utils import get_uuid, current_timestamp, datetime_format
|
37 |
-
from api.utils.api_utils import server_error_response, get_data_error_result, get_json_result, validate_request
|
38 |
-
|
39 |
|
40 |
from api.utils.file_utils import filename_type, thumbnail
|
41 |
from rag.nlp import keyword_extraction
|
42 |
from rag.utils.storage_factory import STORAGE_IMPL
|
43 |
|
44 |
-
from api.db.services.canvas_service import
|
45 |
from agent.canvas import Canvas
|
46 |
from functools import partial
|
47 |
|
48 |
|
49 |
-
def generate_confirmation_token(tenent_id):
|
50 |
-
serializer = URLSafeTimedSerializer(tenent_id)
|
51 |
-
return "ragflow-" + serializer.dumps(get_uuid(), salt=tenent_id)[2:34]
|
52 |
-
|
53 |
-
|
54 |
@manager.route('/new_token', methods=['POST'])
|
55 |
@login_required
|
56 |
def new_token():
|
|
|
22 |
from flask_login import login_required, current_user
|
23 |
|
24 |
from api.db import FileType, LLMType, ParserType, FileSource
|
25 |
+
from api.db.db_models import APIToken, Task, File
|
26 |
from api.db.services import duplicate_name
|
27 |
from api.db.services.api_service import APITokenService, API4ConversationService
|
28 |
from api.db.services.dialog_service import DialogService, chat
|
|
|
34 |
from api.db.services.user_service import UserTenantService
|
35 |
from api.settings import RetCode, retrievaler
|
36 |
from api.utils import get_uuid, current_timestamp, datetime_format
|
37 |
+
from api.utils.api_utils import server_error_response, get_data_error_result, get_json_result, validate_request, \
|
38 |
+
generate_confirmation_token
|
39 |
|
40 |
from api.utils.file_utils import filename_type, thumbnail
|
41 |
from rag.nlp import keyword_extraction
|
42 |
from rag.utils.storage_factory import STORAGE_IMPL
|
43 |
|
44 |
+
from api.db.services.canvas_service import UserCanvasService
|
45 |
from agent.canvas import Canvas
|
46 |
from functools import partial
|
47 |
|
48 |
|
|
|
|
|
|
|
|
|
|
|
49 |
@manager.route('/new_token', methods=['POST'])
|
50 |
@login_required
|
51 |
def new_token():
|
api/apps/system_app.py
CHANGED
@@ -17,16 +17,14 @@ import json
|
|
17 |
from datetime import datetime
|
18 |
|
19 |
from flask_login import login_required, current_user
|
20 |
-
|
21 |
-
from api.apps.api_app import generate_confirmation_token
|
22 |
from api.db.services.api_service import APITokenService
|
23 |
from api.db.services.knowledgebase_service import KnowledgebaseService
|
24 |
from api.db.services.user_service import UserTenantService
|
25 |
from api.settings import DATABASE_TYPE
|
26 |
from api.utils import current_timestamp, datetime_format
|
27 |
-
from api.utils.api_utils import get_json_result,
|
|
|
28 |
from api.versions import get_rag_version
|
29 |
-
from rag.settings import SVR_QUEUE_NAME
|
30 |
from rag.utils.es_conn import ELASTICSEARCH
|
31 |
from rag.utils.storage_factory import STORAGE_IMPL, STORAGE_IMPL_TYPE
|
32 |
from timeit import default_timer as timer
|
|
|
17 |
from datetime import datetime
|
18 |
|
19 |
from flask_login import login_required, current_user
|
|
|
|
|
20 |
from api.db.services.api_service import APITokenService
|
21 |
from api.db.services.knowledgebase_service import KnowledgebaseService
|
22 |
from api.db.services.user_service import UserTenantService
|
23 |
from api.settings import DATABASE_TYPE
|
24 |
from api.utils import current_timestamp, datetime_format
|
25 |
+
from api.utils.api_utils import get_json_result, get_data_error_result, server_error_response, \
|
26 |
+
generate_confirmation_token
|
27 |
from api.versions import get_rag_version
|
|
|
28 |
from rag.utils.es_conn import ELASTICSEARCH
|
29 |
from rag.utils.storage_factory import STORAGE_IMPL, STORAGE_IMPL_TYPE
|
30 |
from timeit import default_timer as timer
|
api/utils/api_utils.py
CHANGED
@@ -29,6 +29,7 @@ from flask import (
|
|
29 |
Response, jsonify, send_file, make_response,
|
30 |
request as flask_request,
|
31 |
)
|
|
|
32 |
from werkzeug.http import HTTP_STATUS_CODES
|
33 |
|
34 |
from api.db.db_models import APIToken
|
@@ -37,7 +38,7 @@ from api.settings import (
|
|
37 |
stat_logger, CLIENT_AUTHENTICATION, HTTP_APP_KEY, SECRET_KEY
|
38 |
)
|
39 |
from api.settings import RetCode
|
40 |
-
from api.utils import CustomJSONEncoder
|
41 |
from api.utils import json_dumps
|
42 |
|
43 |
requests.models.complexjson.dumps = functools.partial(
|
@@ -52,7 +53,7 @@ def request(**kwargs):
|
|
52 |
k.replace(
|
53 |
'_',
|
54 |
'-').upper(): v for k,
|
55 |
-
|
56 |
'headers',
|
57 |
{}).items()}
|
58 |
prepped = requests.Request(**kwargs).prepare()
|
@@ -269,6 +270,7 @@ def token_required(func):
|
|
269 |
|
270 |
return decorated_function
|
271 |
|
|
|
272 |
def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None):
|
273 |
if retcode == 0:
|
274 |
if data is not None:
|
@@ -276,10 +278,11 @@ def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None):
|
|
276 |
else:
|
277 |
response = {"code": retcode}
|
278 |
else:
|
279 |
-
|
280 |
return jsonify(response)
|
281 |
|
282 |
-
|
|
|
283 |
):
|
284 |
import re
|
285 |
result_dict = {
|
@@ -295,4 +298,9 @@ def get_error_data_result(retmsg='Sorry! Data missing!',retcode=RetCode.DATA_ERR
|
|
295 |
continue
|
296 |
else:
|
297 |
response[key] = value
|
298 |
-
return jsonify(response)
|
|
|
|
|
|
|
|
|
|
|
|
29 |
Response, jsonify, send_file, make_response,
|
30 |
request as flask_request,
|
31 |
)
|
32 |
+
from itsdangerous import URLSafeTimedSerializer
|
33 |
from werkzeug.http import HTTP_STATUS_CODES
|
34 |
|
35 |
from api.db.db_models import APIToken
|
|
|
38 |
stat_logger, CLIENT_AUTHENTICATION, HTTP_APP_KEY, SECRET_KEY
|
39 |
)
|
40 |
from api.settings import RetCode
|
41 |
+
from api.utils import CustomJSONEncoder, get_uuid
|
42 |
from api.utils import json_dumps
|
43 |
|
44 |
requests.models.complexjson.dumps = functools.partial(
|
|
|
53 |
k.replace(
|
54 |
'_',
|
55 |
'-').upper(): v for k,
|
56 |
+
v in kwargs.get(
|
57 |
'headers',
|
58 |
{}).items()}
|
59 |
prepped = requests.Request(**kwargs).prepare()
|
|
|
270 |
|
271 |
return decorated_function
|
272 |
|
273 |
+
|
274 |
def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None):
|
275 |
if retcode == 0:
|
276 |
if data is not None:
|
|
|
278 |
else:
|
279 |
response = {"code": retcode}
|
280 |
else:
|
281 |
+
response = {"code": retcode, "message": retmsg}
|
282 |
return jsonify(response)
|
283 |
|
284 |
+
|
285 |
+
def get_error_data_result(retmsg='Sorry! Data missing!', retcode=RetCode.DATA_ERROR,
|
286 |
):
|
287 |
import re
|
288 |
result_dict = {
|
|
|
298 |
continue
|
299 |
else:
|
300 |
response[key] = value
|
301 |
+
return jsonify(response)
|
302 |
+
|
303 |
+
|
304 |
+
def generate_confirmation_token(tenent_id):
|
305 |
+
serializer = URLSafeTimedSerializer(tenent_id)
|
306 |
+
return "ragflow-" + serializer.dumps(get_uuid(), salt=tenent_id)[2:34]
|