### What problem does this PR solve? ### Type of change - [x] Refactoringtags/v0.13.0
| from flask_login import login_required, current_user | from flask_login import login_required, current_user | ||||
| from api.db import FileType, LLMType, ParserType, FileSource | 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 import duplicate_name | ||||
| from api.db.services.api_service import APITokenService, API4ConversationService | from api.db.services.api_service import APITokenService, API4ConversationService | ||||
| from api.db.services.dialog_service import DialogService, chat | from api.db.services.dialog_service import DialogService, chat | ||||
| from api.db.services.user_service import UserTenantService | from api.db.services.user_service import UserTenantService | ||||
| from api.settings import RetCode, retrievaler | from api.settings import RetCode, retrievaler | ||||
| from api.utils import get_uuid, current_timestamp, datetime_format | 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 api.utils.file_utils import filename_type, thumbnail | ||||
| from rag.nlp import keyword_extraction | from rag.nlp import keyword_extraction | ||||
| from rag.utils.storage_factory import STORAGE_IMPL | 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 agent.canvas import Canvas | ||||
| from functools import partial | 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']) | @manager.route('/new_token', methods=['POST']) | ||||
| @login_required | @login_required | ||||
| def new_token(): | def new_token(): |
| from datetime import datetime | from datetime import datetime | ||||
| from flask_login import login_required, current_user | 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.api_service import APITokenService | ||||
| from api.db.services.knowledgebase_service import KnowledgebaseService | from api.db.services.knowledgebase_service import KnowledgebaseService | ||||
| from api.db.services.user_service import UserTenantService | from api.db.services.user_service import UserTenantService | ||||
| from api.settings import DATABASE_TYPE | from api.settings import DATABASE_TYPE | ||||
| from api.utils import current_timestamp, datetime_format | 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 api.versions import get_rag_version | ||||
| from rag.settings import SVR_QUEUE_NAME | |||||
| from rag.utils.es_conn import ELASTICSEARCH | from rag.utils.es_conn import ELASTICSEARCH | ||||
| from rag.utils.storage_factory import STORAGE_IMPL, STORAGE_IMPL_TYPE | from rag.utils.storage_factory import STORAGE_IMPL, STORAGE_IMPL_TYPE | ||||
| from timeit import default_timer as timer | from timeit import default_timer as timer |
| Response, jsonify, send_file, make_response, | Response, jsonify, send_file, make_response, | ||||
| request as flask_request, | request as flask_request, | ||||
| ) | ) | ||||
| from itsdangerous import URLSafeTimedSerializer | |||||
| from werkzeug.http import HTTP_STATUS_CODES | from werkzeug.http import HTTP_STATUS_CODES | ||||
| from api.db.db_models import APIToken | from api.db.db_models import APIToken | ||||
| stat_logger, CLIENT_AUTHENTICATION, HTTP_APP_KEY, SECRET_KEY | stat_logger, CLIENT_AUTHENTICATION, HTTP_APP_KEY, SECRET_KEY | ||||
| ) | ) | ||||
| from api.settings import RetCode | from api.settings import RetCode | ||||
| from api.utils import CustomJSONEncoder | |||||
| from api.utils import CustomJSONEncoder, get_uuid | |||||
| from api.utils import json_dumps | from api.utils import json_dumps | ||||
| requests.models.complexjson.dumps = functools.partial( | requests.models.complexjson.dumps = functools.partial( | ||||
| k.replace( | k.replace( | ||||
| '_', | '_', | ||||
| '-').upper(): v for k, | '-').upper(): v for k, | ||||
| v in kwargs.get( | |||||
| v in kwargs.get( | |||||
| 'headers', | 'headers', | ||||
| {}).items()} | {}).items()} | ||||
| prepped = requests.Request(**kwargs).prepare() | prepped = requests.Request(**kwargs).prepare() | ||||
| return decorated_function | return decorated_function | ||||
| def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None): | def get_result(retcode=RetCode.SUCCESS, retmsg='error', data=None): | ||||
| if retcode == 0: | if retcode == 0: | ||||
| if data is not None: | if data is not None: | ||||
| else: | else: | ||||
| response = {"code": retcode} | response = {"code": retcode} | ||||
| else: | else: | ||||
| response = {"code": retcode, "message": retmsg} | |||||
| response = {"code": retcode, "message": retmsg} | |||||
| return jsonify(response) | 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 | import re | ||||
| result_dict = { | result_dict = { | ||||
| continue | continue | ||||
| else: | else: | ||||
| response[key] = value | response[key] = value | ||||
| return jsonify(response) | |||||
| return jsonify(response) | |||||
| def generate_confirmation_token(tenent_id): | |||||
| serializer = URLSafeTimedSerializer(tenent_id) | |||||
| return "ragflow-" + serializer.dumps(get_uuid(), salt=tenent_id)[2:34] |