Browse Source

refactor api util (#2849)

### What problem does this PR solve?


### Type of change

- [x] Refactoring
tags/v0.13.0
Kevin Hu 1 year ago
parent
commit
c8783672d7
No account linked to committer's email address
3 changed files with 19 additions and 18 deletions
  1. 4
    9
      api/apps/api_app.py
  2. 2
    4
      api/apps/system_app.py
  3. 13
    5
      api/utils/api_utils.py

+ 4
- 9
api/apps/api_app.py View File

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():

+ 2
- 4
api/apps/system_app.py View File

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

+ 13
- 5
api/utils/api_utils.py View File

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]

Loading…
Cancel
Save