### What problem does this PR solve? Added static check at PR CI ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) - [x] Refactoringtags/v0.15.0
| fetch-depth: 0 | fetch-depth: 0 | ||||
| fetch-tags: true | fetch-tags: true | ||||
| # https://github.com/astral-sh/ruff-action | |||||
| - name: Static check with Ruff | |||||
| uses: astral-sh/ruff-action@v2 | |||||
| with: | |||||
| version: ">=0.8.2" | |||||
| - name: Build ragflow:dev-slim | - name: Build ragflow:dev-slim | ||||
| run: | | run: | | ||||
| RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME} | RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME} | 
| from functools import partial | from functools import partial | ||||
| @manager.route('/new_token', methods=['POST']) | |||||
| @manager.route('/new_token', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def new_token(): | def new_token(): | ||||
| req = request.json | req = request.json | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/token_list', methods=['GET']) | |||||
| @manager.route('/token_list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def token_list(): | def token_list(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @validate_request("tokens", "tenant_id") | @validate_request("tokens", "tenant_id") | ||||
| @login_required | @login_required | ||||
| def rm(): | def rm(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/stats', methods=['GET']) | |||||
| @manager.route('/stats', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def stats(): | def stats(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/new_conversation', methods=['GET']) | |||||
| @manager.route('/new_conversation', methods=['GET']) # noqa: F821 | |||||
| def set_conversation(): | def set_conversation(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| objs = APIToken.query(token=token) | objs = APIToken.query(token=token) | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/completion', methods=['POST']) | |||||
| @manager.route('/completion', methods=['POST']) # noqa: F821 | |||||
| @validate_request("conversation_id", "messages") | @validate_request("conversation_id", "messages") | ||||
| def completion(): | def completion(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/conversation/<conversation_id>', methods=['GET']) | |||||
| @manager.route('/conversation/<conversation_id>', methods=['GET']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def get(conversation_id): | def get(conversation_id): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/document/upload', methods=['POST']) | |||||
| @manager.route('/document/upload', methods=['POST']) # noqa: F821 | |||||
| @validate_request("kb_name") | @validate_request("kb_name") | ||||
| def upload(): | def upload(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return get_json_result(data=doc_result.to_json()) | return get_json_result(data=doc_result.to_json()) | ||||
| @manager.route('/document/upload_and_parse', methods=['POST']) | |||||
| @manager.route('/document/upload_and_parse', methods=['POST']) # noqa: F821 | |||||
| @validate_request("conversation_id") | @validate_request("conversation_id") | ||||
| def upload_parse(): | def upload_parse(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return get_json_result(data=doc_ids) | return get_json_result(data=doc_ids) | ||||
| @manager.route('/list_chunks', methods=['POST']) | |||||
| @manager.route('/list_chunks', methods=['POST']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def list_chunks(): | def list_chunks(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return get_json_result(data=res) | return get_json_result(data=res) | ||||
| @manager.route('/list_kb_docs', methods=['POST']) | |||||
| @manager.route('/list_kb_docs', methods=['POST']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def list_kb_docs(): | def list_kb_docs(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/document/infos', methods=['POST']) | |||||
| @manager.route('/document/infos', methods=['POST']) # noqa: F821 | |||||
| @validate_request("doc_ids") | @validate_request("doc_ids") | ||||
| def docinfos(): | def docinfos(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return get_json_result(data=list(docs.dicts())) | return get_json_result(data=list(docs.dicts())) | ||||
| @manager.route('/document', methods=['DELETE']) | |||||
| @manager.route('/document', methods=['DELETE']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def document_rm(): | def document_rm(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/completion_aibotk', methods=['POST']) | |||||
| @manager.route('/completion_aibotk', methods=['POST']) # noqa: F821 | |||||
| @validate_request("Authorization", "conversation_id", "word") | @validate_request("Authorization", "conversation_id", "word") | ||||
| def completion_faq(): | def completion_faq(): | ||||
| import base64 | import base64 | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/retrieval', methods=['POST']) | |||||
| @manager.route('/retrieval', methods=['POST']) # noqa: F821 | |||||
| @validate_request("kb_id", "question") | @validate_request("kb_id", "question") | ||||
| def retrieval(): | def retrieval(): | ||||
| token = request.headers.get('Authorization').split()[1] | token = request.headers.get('Authorization').split()[1] | 
| from peewee import MySQLDatabase, PostgresqlDatabase | from peewee import MySQLDatabase, PostgresqlDatabase | ||||
| @manager.route('/templates', methods=['GET']) | |||||
| @manager.route('/templates', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def templates(): | def templates(): | ||||
| return get_json_result(data=[c.to_dict() for c in CanvasTemplateService.get_all()]) | return get_json_result(data=[c.to_dict() for c in CanvasTemplateService.get_all()]) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def canvas_list(): | def canvas_list(): | ||||
| return get_json_result(data=sorted([c.to_dict() for c in \ | return get_json_result(data=sorted([c.to_dict() for c in \ | ||||
| ) | ) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @validate_request("canvas_ids") | @validate_request("canvas_ids") | ||||
| @login_required | @login_required | ||||
| def rm(): | def rm(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/set', methods=['POST']) | |||||
| @manager.route('/set', methods=['POST']) # noqa: F821 | |||||
| @validate_request("dsl", "title") | @validate_request("dsl", "title") | ||||
| @login_required | @login_required | ||||
| def save(): | def save(): | ||||
| return get_json_result(data=req) | return get_json_result(data=req) | ||||
| @manager.route('/get/<canvas_id>', methods=['GET']) | |||||
| @manager.route('/get/<canvas_id>', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get(canvas_id): | def get(canvas_id): | ||||
| e, c = UserCanvasService.get_by_id(canvas_id) | e, c = UserCanvasService.get_by_id(canvas_id) | ||||
| return get_json_result(data=c.to_dict()) | return get_json_result(data=c.to_dict()) | ||||
| @manager.route('/completion', methods=['POST']) | |||||
| @manager.route('/completion', methods=['POST']) # noqa: F821 | |||||
| @validate_request("id") | @validate_request("id") | ||||
| @login_required | @login_required | ||||
| def run(): | def run(): | ||||
| return get_json_result(data={"answer": final_ans["content"], "reference": final_ans.get("reference", [])}) | return get_json_result(data={"answer": final_ans["content"], "reference": final_ans.get("reference", [])}) | ||||
| @manager.route('/reset', methods=['POST']) | |||||
| @manager.route('/reset', methods=['POST']) # noqa: F821 | |||||
| @validate_request("id") | @validate_request("id") | ||||
| @login_required | @login_required | ||||
| def reset(): | def reset(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/test_db_connect', methods=['POST']) | |||||
| @manager.route('/test_db_connect', methods=['POST']) # noqa: F821 | |||||
| @validate_request("db_type", "database", "username", "host", "port", "password") | @validate_request("db_type", "database", "username", "host", "port", "password") | ||||
| @login_required | @login_required | ||||
| def test_db_connect(): | def test_db_connect(): | 
| import re | import re | ||||
| @manager.route('/list', methods=['POST']) | |||||
| @manager.route('/list', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id") | @validate_request("doc_id") | ||||
| def list_chunk(): | def list_chunk(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/get', methods=['GET']) | |||||
| @manager.route('/get', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get(): | def get(): | ||||
| chunk_id = request.args["chunk_id"] | chunk_id = request.args["chunk_id"] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/set', methods=['POST']) | |||||
| @manager.route('/set', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id", "chunk_id", "content_with_weight", | @validate_request("doc_id", "chunk_id", "content_with_weight", | ||||
| "important_kwd", "question_kwd") | "important_kwd", "question_kwd") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/switch', methods=['POST']) | |||||
| @manager.route('/switch', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("chunk_ids", "available_int", "doc_id") | @validate_request("chunk_ids", "available_int", "doc_id") | ||||
| def switch(): | def switch(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("chunk_ids", "doc_id") | @validate_request("chunk_ids", "doc_id") | ||||
| def rm(): | def rm(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/create', methods=['POST']) | |||||
| @manager.route('/create', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id", "content_with_weight") | @validate_request("doc_id", "content_with_weight") | ||||
| def create(): | def create(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/retrieval_test', methods=['POST']) | |||||
| @manager.route('/retrieval_test', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("kb_id", "question") | @validate_request("kb_id", "question") | ||||
| def retrieval_test(): | def retrieval_test(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/knowledge_graph', methods=['GET']) | |||||
| @manager.route('/knowledge_graph', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def knowledge_graph(): | def knowledge_graph(): | ||||
| doc_id = request.args["doc_id"] | doc_id = request.args["doc_id"] | 
| from graphrag.mind_map_extractor import MindMapExtractor | from graphrag.mind_map_extractor import MindMapExtractor | ||||
| @manager.route('/set', methods=['POST']) | |||||
| @manager.route('/set', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def set_conversation(): | def set_conversation(): | ||||
| req = request.json | req = request.json | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/get', methods=['GET']) | |||||
| @manager.route('/get', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get(): | def get(): | ||||
| conv_id = request.args["conversation_id"] | conv_id = request.args["conversation_id"] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def rm(): | def rm(): | ||||
| conv_ids = request.json["conversation_ids"] | conv_ids = request.json["conversation_ids"] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_convsersation(): | def list_convsersation(): | ||||
| dialog_id = request.args["dialog_id"] | dialog_id = request.args["dialog_id"] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/completion', methods=['POST']) | |||||
| @manager.route('/completion', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("conversation_id", "messages") | @validate_request("conversation_id", "messages") | ||||
| def completion(): | def completion(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/tts', methods=['POST']) | |||||
| @manager.route('/tts', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def tts(): | def tts(): | ||||
| req = request.json | req = request.json | ||||
| return resp | return resp | ||||
| @manager.route('/delete_msg', methods=['POST']) | |||||
| @manager.route('/delete_msg', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("conversation_id", "message_id") | @validate_request("conversation_id", "message_id") | ||||
| def delete_msg(): | def delete_msg(): | ||||
| return get_json_result(data=conv) | return get_json_result(data=conv) | ||||
| @manager.route('/thumbup', methods=['POST']) | |||||
| @manager.route('/thumbup', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("conversation_id", "message_id") | @validate_request("conversation_id", "message_id") | ||||
| def thumbup(): | def thumbup(): | ||||
| return get_json_result(data=conv) | return get_json_result(data=conv) | ||||
| @manager.route('/ask', methods=['POST']) | |||||
| @manager.route('/ask', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("question", "kb_ids") | @validate_request("question", "kb_ids") | ||||
| def ask_about(): | def ask_about(): | ||||
| return resp | return resp | ||||
| @manager.route('/mindmap', methods=['POST']) | |||||
| @manager.route('/mindmap', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("question", "kb_ids") | @validate_request("question", "kb_ids") | ||||
| def mindmap(): | def mindmap(): | ||||
| return get_json_result(data=mind_map) | return get_json_result(data=mind_map) | ||||
| @manager.route('/related_questions', methods=['POST']) | |||||
| @manager.route('/related_questions', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("question") | @validate_request("question") | ||||
| def related_questions(): | def related_questions(): | 
| from api.utils.api_utils import get_json_result | from api.utils.api_utils import get_json_result | ||||
| @manager.route('/set', methods=['POST']) | |||||
| @manager.route('/set', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def set_dialog(): | def set_dialog(): | ||||
| req = request.json | req = request.json | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/get', methods=['GET']) | |||||
| @manager.route('/get', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get(): | def get(): | ||||
| dialog_id = request.args["dialog_id"] | dialog_id = request.args["dialog_id"] | ||||
| return ids, nms | return ids, nms | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_dialogs(): | def list_dialogs(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("dialog_ids") | @validate_request("dialog_ids") | ||||
| def rm(): | def rm(): | 
| from api.constants import IMG_BASE64_PREFIX | from api.constants import IMG_BASE64_PREFIX | ||||
| @manager.route('/upload', methods=['POST']) | |||||
| @manager.route('/upload', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("kb_id") | @validate_request("kb_id") | ||||
| def upload(): | def upload(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/web_crawl', methods=['POST']) | |||||
| @manager.route('/web_crawl', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("kb_id", "name", "url") | @validate_request("kb_id", "name", "url") | ||||
| def web_crawl(): | def web_crawl(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/create', methods=['POST']) | |||||
| @manager.route('/create', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("name", "kb_id") | @validate_request("name", "kb_id") | ||||
| def create(): | def create(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_docs(): | def list_docs(): | ||||
| kb_id = request.args.get("kb_id") | kb_id = request.args.get("kb_id") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/infos', methods=['POST']) | |||||
| @manager.route('/infos', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def docinfos(): | def docinfos(): | ||||
| req = request.json | req = request.json | ||||
| return get_json_result(data=list(docs.dicts())) | return get_json_result(data=list(docs.dicts())) | ||||
| @manager.route('/thumbnails', methods=['GET']) | |||||
| @manager.route('/thumbnails', methods=['GET']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def thumbnails(): | def thumbnails(): | ||||
| doc_ids = request.args.get("doc_ids").split(",") | doc_ids = request.args.get("doc_ids").split(",") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/change_status', methods=['POST']) | |||||
| @manager.route('/change_status', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id", "status") | @validate_request("doc_id", "status") | ||||
| def change_status(): | def change_status(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id") | @validate_request("doc_id") | ||||
| def rm(): | def rm(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/run', methods=['POST']) | |||||
| @manager.route('/run', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_ids", "run") | @validate_request("doc_ids", "run") | ||||
| def run(): | def run(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rename', methods=['POST']) | |||||
| @manager.route('/rename', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id", "name") | @validate_request("doc_id", "name") | ||||
| def rename(): | def rename(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/get/<doc_id>', methods=['GET']) | |||||
| @manager.route('/get/<doc_id>', methods=['GET']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def get(doc_id): | def get(doc_id): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/change_parser', methods=['POST']) | |||||
| @manager.route('/change_parser', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("doc_id", "parser_id") | @validate_request("doc_id", "parser_id") | ||||
| def change_parser(): | def change_parser(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/image/<image_id>', methods=['GET']) | |||||
| @manager.route('/image/<image_id>', methods=['GET']) # noqa: F821 | |||||
| # @login_required | # @login_required | ||||
| def get_image(image_id): | def get_image(image_id): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/upload_and_parse', methods=['POST']) | |||||
| @manager.route('/upload_and_parse', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("conversation_id") | @validate_request("conversation_id") | ||||
| def upload_and_parse(): | def upload_and_parse(): | ||||
| return get_json_result(data=doc_ids) | return get_json_result(data=doc_ids) | ||||
| @manager.route('/parse', methods=['POST']) | |||||
| @manager.route('/parse', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def parse(): | def parse(): | ||||
| url = request.json.get("url") if request.json else "" | url = request.json.get("url") if request.json else "" | 
| from api.utils.api_utils import get_json_result | from api.utils.api_utils import get_json_result | ||||
| @manager.route('/convert', methods=['POST']) | |||||
| @manager.route('/convert', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("file_ids", "kb_ids") | @validate_request("file_ids", "kb_ids") | ||||
| def convert(): | def convert(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("file_ids") | @validate_request("file_ids") | ||||
| def rm(): | def rm(): | 
| from rag.utils.storage_factory import STORAGE_IMPL | from rag.utils.storage_factory import STORAGE_IMPL | ||||
| @manager.route('/upload', methods=['POST']) | |||||
| @manager.route('/upload', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| # @validate_request("parent_id") | # @validate_request("parent_id") | ||||
| def upload(): | def upload(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/create', methods=['POST']) | |||||
| @manager.route('/create', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("name") | @validate_request("name") | ||||
| def create(): | def create(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_files(): | def list_files(): | ||||
| pf_id = request.args.get("parent_id") | pf_id = request.args.get("parent_id") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/root_folder', methods=['GET']) | |||||
| @manager.route('/root_folder', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get_root_folder(): | def get_root_folder(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/parent_folder', methods=['GET']) | |||||
| @manager.route('/parent_folder', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get_parent_folder(): | def get_parent_folder(): | ||||
| file_id = request.args.get("file_id") | file_id = request.args.get("file_id") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/all_parent_folder', methods=['GET']) | |||||
| @manager.route('/all_parent_folder', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get_all_parent_folders(): | def get_all_parent_folders(): | ||||
| file_id = request.args.get("file_id") | file_id = request.args.get("file_id") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['POST']) | |||||
| @manager.route('/rm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("file_ids") | @validate_request("file_ids") | ||||
| def rm(): | def rm(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rename', methods=['POST']) | |||||
| @manager.route('/rename', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("file_id", "name") | @validate_request("file_id", "name") | ||||
| def rename(): | def rename(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/get/<file_id>', methods=['GET']) | |||||
| @manager.route('/get/<file_id>', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def get(file_id): | def get(file_id): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/mv', methods=['POST']) | |||||
| @manager.route('/mv', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("src_file_ids", "dest_file_id") | @validate_request("src_file_ids", "dest_file_id") | ||||
| def move(): | def move(): | 
| from api.constants import DATASET_NAME_LIMIT | from api.constants import DATASET_NAME_LIMIT | ||||
| @manager.route('/create', methods=['post']) | |||||
| @manager.route('/create', methods=['post']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("name") | @validate_request("name") | ||||
| def create(): | def create(): | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/update', methods=['post']) | |||||
| @manager.route('/update', methods=['post']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("kb_id", "name", "description", "permission", "parser_id") | @validate_request("kb_id", "name", "description", "permission", "parser_id") | ||||
| @not_allowed_parameters("id", "tenant_id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by") | @not_allowed_parameters("id", "tenant_id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/detail', methods=['GET']) | |||||
| @manager.route('/detail', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def detail(): | def detail(): | ||||
| kb_id = request.args["kb_id"] | kb_id = request.args["kb_id"] | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_kbs(): | def list_kbs(): | ||||
| keywords = request.args.get("keywords", "") | keywords = request.args.get("keywords", "") | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/rm', methods=['post']) | |||||
| @manager.route('/rm', methods=['post']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("kb_id") | @validate_request("kb_id") | ||||
| def rm(): | def rm(): | 
| import requests | import requests | ||||
| @manager.route('/factories', methods=['GET']) | |||||
| @manager.route('/factories', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def factories(): | def factories(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/set_api_key', methods=['POST']) | |||||
| @manager.route('/set_api_key', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("llm_factory", "api_key") | @validate_request("llm_factory", "api_key") | ||||
| def set_api_key(): | def set_api_key(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/add_llm', methods=['POST']) | |||||
| @manager.route('/add_llm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("llm_factory") | @validate_request("llm_factory") | ||||
| def add_llm(): | def add_llm(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/delete_llm', methods=['POST']) | |||||
| @manager.route('/delete_llm', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("llm_factory", "llm_name") | @validate_request("llm_factory", "llm_name") | ||||
| def delete_llm(): | def delete_llm(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/delete_factory', methods=['POST']) | |||||
| @manager.route('/delete_factory', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("llm_factory") | @validate_request("llm_factory") | ||||
| def delete_factory(): | def delete_factory(): | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route('/my_llms', methods=['GET']) | |||||
| @manager.route('/my_llms', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def my_llms(): | def my_llms(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/list', methods=['GET']) | |||||
| @manager.route('/list', methods=['GET']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def list_app(): | def list_app(): | ||||
| self_deploied = ["Youdao", "FastEmbed", "BAAI", "Ollama", "Xinference", "LocalAI", "LM-Studio"] | self_deploied = ["Youdao", "FastEmbed", "BAAI", "Ollama", "Xinference", "LocalAI", "LM-Studio"] | 
| from api.utils.api_utils import get_result | from api.utils.api_utils import get_result | ||||
| from flask import request | from flask import request | ||||
| @manager.route('/agents', methods=['GET']) | |||||
| @manager.route('/agents', methods=['GET']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_agents(tenant_id): | def list_agents(tenant_id): | ||||
| id = request.args.get("id") | id = request.args.get("id") | 
| @manager.route('/chats', methods=['POST']) | |||||
| @manager.route('/chats', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def create(tenant_id): | def create(tenant_id): | ||||
| req=request.json | req=request.json | ||||
| res["avatar"] = res.pop("icon") | res["avatar"] = res.pop("icon") | ||||
| return get_result(data=res) | return get_result(data=res) | ||||
| @manager.route('/chats/<chat_id>', methods=['PUT']) | |||||
| @manager.route('/chats/<chat_id>', methods=['PUT']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def update(tenant_id,chat_id): | def update(tenant_id,chat_id): | ||||
| if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): | if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): | ||||
| return get_result() | return get_result() | ||||
| @manager.route('/chats', methods=['DELETE']) | |||||
| @manager.route('/chats', methods=['DELETE']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def delete(tenant_id): | def delete(tenant_id): | ||||
| req = request.json | req = request.json | ||||
| DialogService.update_by_id(id, temp_dict) | DialogService.update_by_id(id, temp_dict) | ||||
| return get_result() | return get_result() | ||||
| @manager.route('/chats', methods=['GET']) | |||||
| @manager.route('/chats', methods=['GET']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_chat(tenant_id): | def list_chat(tenant_id): | ||||
| id = request.args.get("id") | id = request.args.get("id") | 
| ) | ) | ||||
| @manager.route("/datasets", methods=["POST"]) | |||||
| @manager.route("/datasets", methods=["POST"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def create(tenant_id): | def create(tenant_id): | ||||
| """ | """ | ||||
| return get_result(data=renamed_data) | return get_result(data=renamed_data) | ||||
| @manager.route("/datasets", methods=["DELETE"]) | |||||
| @manager.route("/datasets", methods=["DELETE"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def delete(tenant_id): | def delete(tenant_id): | ||||
| """ | """ | ||||
| return get_result(code=settings.RetCode.SUCCESS) | return get_result(code=settings.RetCode.SUCCESS) | ||||
| @manager.route("/datasets/<dataset_id>", methods=["PUT"]) | |||||
| @manager.route("/datasets/<dataset_id>", methods=["PUT"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def update(tenant_id, dataset_id): | def update(tenant_id, dataset_id): | ||||
| """ | """ | ||||
| return get_result(code=settings.RetCode.SUCCESS) | return get_result(code=settings.RetCode.SUCCESS) | ||||
| @manager.route("/datasets", methods=["GET"]) | |||||
| @manager.route("/datasets", methods=["GET"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list(tenant_id): | def list(tenant_id): | ||||
| """ | """ | 
| from api.utils.api_utils import validate_request, build_error_result, apikey_required | from api.utils.api_utils import validate_request, build_error_result, apikey_required | ||||
| @manager.route('/dify/retrieval', methods=['POST']) | |||||
| @manager.route('/dify/retrieval', methods=['POST']) # noqa: F821 | |||||
| @apikey_required | @apikey_required | ||||
| @validate_request("knowledge_id", "query") | @validate_request("knowledge_id", "query") | ||||
| def retrieval(tenant_id): | def retrieval(tenant_id): | 
| MAXIMUM_OF_UPLOADING_FILES = 256 | MAXIMUM_OF_UPLOADING_FILES = 256 | ||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["POST"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["POST"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def upload(dataset_id, tenant_id): | def upload(dataset_id, tenant_id): | ||||
| """ | """ | ||||
| return get_result(data=renamed_doc_list) | return get_result(data=renamed_doc_list) | ||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["PUT"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["PUT"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def update_doc(tenant_id, dataset_id, document_id): | def update_doc(tenant_id, dataset_id, document_id): | ||||
| """ | """ | ||||
| return get_result() | return get_result() | ||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["GET"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["GET"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def download(tenant_id, dataset_id, document_id): | def download(tenant_id, dataset_id, document_id): | ||||
| """ | """ | ||||
| ) | ) | ||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["GET"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["GET"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_docs(dataset_id, tenant_id): | def list_docs(dataset_id, tenant_id): | ||||
| """ | """ | ||||
| return get_result(data={"total": tol, "docs": renamed_doc_list}) | return get_result(data={"total": tol, "docs": renamed_doc_list}) | ||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["DELETE"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents", methods=["DELETE"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def delete(tenant_id, dataset_id): | def delete(tenant_id, dataset_id): | ||||
| """ | """ | ||||
| return get_result() | return get_result() | ||||
| @manager.route("/datasets/<dataset_id>/chunks", methods=["POST"]) | |||||
| @manager.route("/datasets/<dataset_id>/chunks", methods=["POST"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def parse(tenant_id, dataset_id): | def parse(tenant_id, dataset_id): | ||||
| """ | """ | ||||
| return get_result() | return get_result() | ||||
| @manager.route("/datasets/<dataset_id>/chunks", methods=["DELETE"]) | |||||
| @manager.route("/datasets/<dataset_id>/chunks", methods=["DELETE"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def stop_parsing(tenant_id, dataset_id): | def stop_parsing(tenant_id, dataset_id): | ||||
| """ | """ | ||||
| return get_result() | return get_result() | ||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["GET"]) | |||||
| @manager.route("/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["GET"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_chunks(tenant_id, dataset_id, document_id): | def list_chunks(tenant_id, dataset_id, document_id): | ||||
| """ | """ | ||||
| return get_result(data=res) | return get_result(data=res) | ||||
| @manager.route( | |||||
| @manager.route( # noqa: F821 | |||||
| "/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["POST"] | "/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["POST"] | ||||
| ) | ) | ||||
| @token_required | @token_required | ||||
| # return get_result(data={"chunk_id": chunk_id}) | # return get_result(data={"chunk_id": chunk_id}) | ||||
| @manager.route( | |||||
| @manager.route( # noqa: F821 | |||||
| "datasets/<dataset_id>/documents/<document_id>/chunks", methods=["DELETE"] | "datasets/<dataset_id>/documents/<document_id>/chunks", methods=["DELETE"] | ||||
| ) | ) | ||||
| @token_required | @token_required | ||||
| return get_result(message=f"deleted {chunk_number} chunks") | return get_result(message=f"deleted {chunk_number} chunks") | ||||
| @manager.route( | |||||
| @manager.route( # noqa: F821 | |||||
| "/datasets/<dataset_id>/documents/<document_id>/chunks/<chunk_id>", methods=["PUT"] | "/datasets/<dataset_id>/documents/<document_id>/chunks/<chunk_id>", methods=["PUT"] | ||||
| ) | ) | ||||
| @token_required | @token_required | ||||
| return get_result() | return get_result() | ||||
| @manager.route("/retrieval", methods=["POST"]) | |||||
| @manager.route("/retrieval", methods=["POST"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def retrieval_test(tenant_id): | def retrieval_test(tenant_id): | ||||
| """ | """ | 
| from api.db.services.llm_service import LLMBundle | from api.db.services.llm_service import LLMBundle | ||||
| @manager.route('/chats/<chat_id>/sessions', methods=['POST']) | |||||
| @manager.route('/chats/<chat_id>/sessions', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def create(tenant_id, chat_id): | def create(tenant_id, chat_id): | ||||
| req = request.json | req = request.json | ||||
| return get_result(data=conv) | return get_result(data=conv) | ||||
| @manager.route('/agents/<agent_id>/sessions', methods=['POST']) | |||||
| @manager.route('/agents/<agent_id>/sessions', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def create_agent_session(tenant_id, agent_id): | def create_agent_session(tenant_id, agent_id): | ||||
| e, cvs = UserCanvasService.get_by_id(agent_id) | e, cvs = UserCanvasService.get_by_id(agent_id) | ||||
| return get_result(data=conv) | return get_result(data=conv) | ||||
| @manager.route('/chats/<chat_id>/sessions/<session_id>', methods=['PUT']) | |||||
| @manager.route('/chats/<chat_id>/sessions/<session_id>', methods=['PUT']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def update(tenant_id, chat_id, session_id): | def update(tenant_id, chat_id, session_id): | ||||
| req = request.json | req = request.json | ||||
| return get_result() | return get_result() | ||||
| @manager.route('/chats/<chat_id>/completions', methods=['POST']) | |||||
| @manager.route('/chats/<chat_id>/completions', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def completion(tenant_id, chat_id): | def completion(tenant_id, chat_id): | ||||
| dia = DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value) | dia = DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value) | ||||
| return get_result(data=answer) | return get_result(data=answer) | ||||
| @manager.route('/agents/<agent_id>/completions', methods=['POST']) | |||||
| @manager.route('/agents/<agent_id>/completions', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def agent_completion(tenant_id, agent_id): | def agent_completion(tenant_id, agent_id): | ||||
| req = request.json | req = request.json | ||||
| return get_result(data=result) | return get_result(data=result) | ||||
| @manager.route('/chats/<chat_id>/sessions', methods=['GET']) | |||||
| @manager.route('/chats/<chat_id>/sessions', methods=['GET']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_session(tenant_id, chat_id): | def list_session(tenant_id, chat_id): | ||||
| if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): | if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): | ||||
| return get_result(data=convs) | return get_result(data=convs) | ||||
| @manager.route('/agents/<agent_id>/sessions', methods=['GET']) | |||||
| @manager.route('/agents/<agent_id>/sessions', methods=['GET']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def list_agent_session(tenant_id, agent_id): | def list_agent_session(tenant_id, agent_id): | ||||
| if not UserCanvasService.query(user_id=tenant_id, id=agent_id): | if not UserCanvasService.query(user_id=tenant_id, id=agent_id): | ||||
| return get_result(data=convs) | return get_result(data=convs) | ||||
| @manager.route('/chats/<chat_id>/sessions', methods=["DELETE"]) | |||||
| @manager.route('/chats/<chat_id>/sessions', methods=["DELETE"]) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def delete(tenant_id, chat_id): | def delete(tenant_id, chat_id): | ||||
| if not DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value): | if not DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value): | ||||
| return get_result() | return get_result() | ||||
| @manager.route('/sessions/ask', methods=['POST']) | |||||
| @manager.route('/sessions/ask', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def ask_about(tenant_id): | def ask_about(tenant_id): | ||||
| req = request.json | req = request.json | ||||
| return resp | return resp | ||||
| @manager.route('/sessions/related_questions', methods=['POST']) | |||||
| @manager.route('/sessions/related_questions', methods=['POST']) # noqa: F821 | |||||
| @token_required | @token_required | ||||
| def related_questions(tenant_id): | def related_questions(tenant_id): | ||||
| req = request.json | req = request.json | 
| from rag.utils.redis_conn import REDIS_CONN | from rag.utils.redis_conn import REDIS_CONN | ||||
| @manager.route("/version", methods=["GET"]) | |||||
| @manager.route("/version", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def version(): | def version(): | ||||
| """ | """ | ||||
| return get_json_result(data=get_ragflow_version()) | return get_json_result(data=get_ragflow_version()) | ||||
| @manager.route("/status", methods=["GET"]) | |||||
| @manager.route("/status", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def status(): | def status(): | ||||
| """ | """ | ||||
| return get_json_result(data=res) | return get_json_result(data=res) | ||||
| @manager.route("/new_token", methods=["POST"]) | |||||
| @manager.route("/new_token", methods=["POST"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def new_token(): | def new_token(): | ||||
| """ | """ | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route("/token_list", methods=["GET"]) | |||||
| @manager.route("/token_list", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def token_list(): | def token_list(): | ||||
| """ | """ | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route("/token/<token>", methods=["DELETE"]) | |||||
| @manager.route("/token/<token>", methods=["DELETE"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def rm(token): | def rm(token): | ||||
| """ | """ | 
| from api.utils.api_utils import get_json_result, validate_request, server_error_response, get_data_error_result | from api.utils.api_utils import get_json_result, validate_request, server_error_response, get_data_error_result | ||||
| @manager.route("/<tenant_id>/user/list", methods=["GET"]) | |||||
| @manager.route("/<tenant_id>/user/list", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def user_list(tenant_id): | def user_list(tenant_id): | ||||
| if current_user.id != tenant_id: | if current_user.id != tenant_id: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route('/<tenant_id>/user', methods=['POST']) | |||||
| @manager.route('/<tenant_id>/user', methods=['POST']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("email") | @validate_request("email") | ||||
| def create(tenant_id): | def create(tenant_id): | ||||
| return get_json_result(data=usr) | return get_json_result(data=usr) | ||||
| @manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE']) | |||||
| @manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE']) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def rm(tenant_id, user_id): | def rm(tenant_id, user_id): | ||||
| if current_user.id != tenant_id and current_user.id != user_id: | if current_user.id != tenant_id and current_user.id != user_id: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route("/list", methods=["GET"]) | |||||
| @manager.route("/list", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def tenant_list(): | def tenant_list(): | ||||
| try: | try: | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route("/agree/<tenant_id>", methods=["PUT"]) | |||||
| @manager.route("/agree/<tenant_id>", methods=["PUT"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def agree(tenant_id): | def agree(tenant_id): | ||||
| try: | try: | 
| from api.utils.api_utils import get_json_result, construct_response | from api.utils.api_utils import get_json_result, construct_response | ||||
| @manager.route("/login", methods=["POST", "GET"]) | |||||
| @manager.route("/login", methods=["POST", "GET"]) # noqa: F821 | |||||
| def login(): | def login(): | ||||
| """ | """ | ||||
| User login endpoint. | User login endpoint. | ||||
| ) | ) | ||||
| @manager.route("/github_callback", methods=["GET"]) | |||||
| @manager.route("/github_callback", methods=["GET"]) # noqa: F821 | |||||
| def github_callback(): | def github_callback(): | ||||
| """ | """ | ||||
| GitHub OAuth callback endpoint. | GitHub OAuth callback endpoint. | ||||
| return redirect("/?auth=%s" % user.get_id()) | return redirect("/?auth=%s" % user.get_id()) | ||||
| @manager.route("/feishu_callback", methods=["GET"]) | |||||
| @manager.route("/feishu_callback", methods=["GET"]) # noqa: F821 | |||||
| def feishu_callback(): | def feishu_callback(): | ||||
| """ | """ | ||||
| Feishu OAuth callback endpoint. | Feishu OAuth callback endpoint. | ||||
| return user_info | return user_info | ||||
| @manager.route("/logout", methods=["GET"]) | |||||
| @manager.route("/logout", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def log_out(): | def log_out(): | ||||
| """ | """ | ||||
| return get_json_result(data=True) | return get_json_result(data=True) | ||||
| @manager.route("/setting", methods=["POST"]) | |||||
| @manager.route("/setting", methods=["POST"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def setting_user(): | def setting_user(): | ||||
| """ | """ | ||||
| ) | ) | ||||
| @manager.route("/info", methods=["GET"]) | |||||
| @manager.route("/info", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def user_profile(): | def user_profile(): | ||||
| """ | """ | ||||
| return UserService.query(email=user["email"]) | return UserService.query(email=user["email"]) | ||||
| @manager.route("/register", methods=["POST"]) | |||||
| @manager.route("/register", methods=["POST"]) # noqa: F821 | |||||
| @validate_request("nickname", "email", "password") | @validate_request("nickname", "email", "password") | ||||
| def user_add(): | def user_add(): | ||||
| """ | """ | ||||
| ) | ) | ||||
| @manager.route("/tenant_info", methods=["GET"]) | |||||
| @manager.route("/tenant_info", methods=["GET"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| def tenant_info(): | def tenant_info(): | ||||
| """ | """ | ||||
| return server_error_response(e) | return server_error_response(e) | ||||
| @manager.route("/set_tenant_info", methods=["POST"]) | |||||
| @manager.route("/set_tenant_info", methods=["POST"]) # noqa: F821 | |||||
| @login_required | @login_required | ||||
| @validate_request("tenant_id", "asr_id", "embd_id", "img2txt_id", "llm_id") | @validate_request("tenant_id", "asr_id", "embd_id", "img2txt_id", "llm_id") | ||||
| def set_tenant_info(): | def set_tenant_info(): | 
| import pdfplumber | import pdfplumber | ||||
| from PIL import Image | from PIL import Image | ||||
| import numpy as np | import numpy as np | ||||
| from timeit import default_timer as timer | |||||
| from pypdf import PdfReader as pdf2_read | from pypdf import PdfReader as pdf2_read | ||||
| from api import settings | from api import settings | ||||
| self.page_cum_height = [0] | self.page_cum_height = [0] | ||||
| self.page_layout = [] | self.page_layout = [] | ||||
| self.page_from = page_from | self.page_from = page_from | ||||
| st = timer() | |||||
| try: | try: | ||||
| self.pdf = pdfplumber.open(fnm) if isinstance( | self.pdf = pdfplumber.open(fnm) if isinstance( | ||||
| fnm, str) else pdfplumber.open(BytesIO(fnm)) | fnm, str) else pdfplumber.open(BytesIO(fnm)) | 
| from huggingface_hub import snapshot_download | from huggingface_hub import snapshot_download | ||||
| from api.utils.file_utils import get_project_base_directory | from api.utils.file_utils import get_project_base_directory | ||||
| from .operators import * | |||||
| from .operators import * # noqa: F403 | |||||
| import math | import math | ||||
| import numpy as np | import numpy as np | ||||
| import cv2 | import cv2 | 
| from huggingface_hub import snapshot_download | from huggingface_hub import snapshot_download | ||||
| from api.utils.file_utils import get_project_base_directory | from api.utils.file_utils import get_project_base_directory | ||||
| from .operators import * | |||||
| from .operators import * # noqa: F403 | |||||
| from .operators import preprocess | |||||
| class Recognizer(object): | class Recognizer(object): | ||||
| def __init__(self, label_list, task_name, model_dir=None): | def __init__(self, label_list, task_name, model_dir=None): | 
| import networkx as nx | import networkx as nx | ||||
| from dataclasses import dataclass | from dataclasses import dataclass | ||||
| from graphrag.leiden import stable_largest_connected_component | from graphrag.leiden import stable_largest_connected_component | ||||
| import graspologic as gc | |||||
| @dataclass | @dataclass |