diff --git a/api/apps/api_app.py b/api/apps/api_app.py index 8b11d5623..81d031d77 100644 --- a/api/apps/api_app.py +++ b/api/apps/api_app.py @@ -22,7 +22,7 @@ from api.db.services.llm_service import TenantLLMService from flask_login import login_required, current_user from api.db import FileType, LLMType, ParserType, FileSource -from api.db.db_models import APIToken, API4Conversation, Task, File +from api.db.db_models import APIToken, Task, File from api.db.services import duplicate_name from api.db.services.api_service import APITokenService, API4ConversationService from api.db.services.dialog_service import DialogService, chat @@ -34,23 +34,18 @@ from api.db.services.task_service import queue_tasks, TaskService from api.db.services.user_service import UserTenantService from api.settings import RetCode, retrievaler from api.utils import get_uuid, current_timestamp, datetime_format -from api.utils.api_utils import server_error_response, get_data_error_result, get_json_result, validate_request -from itsdangerous import URLSafeTimedSerializer +from api.utils.api_utils import server_error_response, get_data_error_result, get_json_result, validate_request, \ + generate_confirmation_token from api.utils.file_utils import filename_type, thumbnail from rag.nlp import keyword_extraction from rag.utils.storage_factory import STORAGE_IMPL -from api.db.services.canvas_service import CanvasTemplateService, UserCanvasService +from api.db.services.canvas_service import UserCanvasService from agent.canvas import Canvas from functools import partial -def generate_confirmation_token(tenent_id): - serializer = URLSafeTimedSerializer(tenent_id) - return "ragflow-" + serializer.dumps(get_uuid(), salt=tenent_id)[2:34] - - @manager.route('/new_token', methods=['POST']) @login_required def new_token(): diff --git a/api/apps/system_app.py b/api/apps/system_app.py index 35407ec06..d59ab71a3 100644 --- a/api/apps/system_app.py +++ b/api/apps/system_app.py @@ -17,16 +17,14 @@ import json from datetime import datetime from flask_login import login_required, current_user - -from api.apps.api_app import generate_confirmation_token from api.db.services.api_service import APITokenService from api.db.services.knowledgebase_service import KnowledgebaseService from api.db.services.user_service import UserTenantService from api.settings import DATABASE_TYPE from api.utils import current_timestamp, datetime_format -from api.utils.api_utils import get_json_result, request, get_data_error_result, server_error_response +from api.utils.api_utils import get_json_result, get_data_error_result, server_error_response, \ + generate_confirmation_token from api.versions import get_rag_version -from rag.settings import SVR_QUEUE_NAME from rag.utils.es_conn import ELASTICSEARCH from rag.utils.storage_factory import STORAGE_IMPL, STORAGE_IMPL_TYPE from timeit import default_timer as timer diff --git a/api/utils/api_utils.py b/api/utils/api_utils.py index d5748702b..6bfeb8011 100644 --- a/api/utils/api_utils.py +++ b/api/utils/api_utils.py @@ -29,6 +29,7 @@ from flask import ( Response, jsonify, send_file, make_response, request as flask_request, ) +from itsdangerous import URLSafeTimedSerializer from werkzeug.http import HTTP_STATUS_CODES from api.db.db_models import APIToken @@ -37,7 +38,7 @@ from api.settings import ( stat_logger, CLIENT_AUTHENTICATION, HTTP_APP_KEY, SECRET_KEY ) from api.settings import RetCode -from api.utils import CustomJSONEncoder +from api.utils import CustomJSONEncoder, get_uuid from api.utils import json_dumps requests.models.complexjson.dumps = functools.partial( @@ -52,7 +53,7 @@ def request(**kwargs): k.replace( '_', '-').upper(): v for k, - v in kwargs.get( + v in kwargs.get( 'headers', {}).items()} prepped = requests.Request(**kwargs).prepare() @@ -269,6 +270,7 @@ def token_required(func): return decorated_function + def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None): if retcode == 0: if data is not None: @@ -276,10 +278,11 @@ def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None): else: response = {"code": retcode} else: - response = {"code": retcode, "message": retmsg} + response = {"code": retcode, "message": retmsg} return jsonify(response) -def get_error_data_result(retmsg='Sorry! Data missing!',retcode=RetCode.DATA_ERROR, + +def get_error_data_result(retmsg='Sorry! Data missing!', retcode=RetCode.DATA_ERROR, ): import re result_dict = { @@ -295,4 +298,9 @@ def get_error_data_result(retmsg='Sorry! Data missing!',retcode=RetCode.DATA_ERR continue else: response[key] = value - return jsonify(response) \ No newline at end of file + return jsonify(response) + + +def generate_confirmation_token(tenent_id): + serializer = URLSafeTimedSerializer(tenent_id) + return "ragflow-" + serializer.dumps(get_uuid(), salt=tenent_id)[2:34] \ No newline at end of file