rename request_json to get_request_json
This commit is contained in:
parent
e635f21376
commit
fc85ab2ef7
23 changed files with 156 additions and 156 deletions
|
|
@ -18,7 +18,7 @@ from quart import request
|
||||||
from api.db.db_models import APIToken
|
from api.db.db_models import APIToken
|
||||||
from api.db.services.api_service import APITokenService, API4ConversationService
|
from api.db.services.api_service import APITokenService, API4ConversationService
|
||||||
from api.db.services.user_service import UserTenantService
|
from api.db.services.user_service import UserTenantService
|
||||||
from api.utils.api_utils import generate_confirmation_token, get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import generate_confirmation_token, get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from common.time_utils import current_timestamp, datetime_format
|
from common.time_utils import current_timestamp, datetime_format
|
||||||
from api.apps import login_required, current_user
|
from api.apps import login_required, current_user
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@ from api.apps import login_required, current_user
|
||||||
@manager.route('/new_token', methods=['POST']) # noqa: F821
|
@manager.route('/new_token', methods=['POST']) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def new_token():
|
async def new_token():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
tenants = UserTenantService.query(user_id=current_user.id)
|
tenants = UserTenantService.query(user_id=current_user.id)
|
||||||
if not tenants:
|
if not tenants:
|
||||||
|
|
@ -72,7 +72,7 @@ def token_list():
|
||||||
@validate_request("tokens", "tenant_id")
|
@validate_request("tokens", "tenant_id")
|
||||||
@login_required
|
@login_required
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
for token in req["tokens"]:
|
for token in req["tokens"]:
|
||||||
APITokenService.filter_delete(
|
APITokenService.filter_delete(
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ from api.db.services.user_canvas_version import UserCanvasVersionService
|
||||||
from common.constants import RetCode
|
from common.constants import RetCode
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from api.utils.api_utils import get_json_result, server_error_response, validate_request, get_data_error_result, \
|
from api.utils.api_utils import get_json_result, server_error_response, validate_request, get_data_error_result, \
|
||||||
request_json
|
get_request_json
|
||||||
from agent.canvas import Canvas
|
from agent.canvas import Canvas
|
||||||
from peewee import MySQLDatabase, PostgresqlDatabase
|
from peewee import MySQLDatabase, PostgresqlDatabase
|
||||||
from api.db.db_models import APIToken, Task
|
from api.db.db_models import APIToken, Task
|
||||||
|
|
@ -53,7 +53,7 @@ def templates():
|
||||||
@validate_request("canvas_ids")
|
@validate_request("canvas_ids")
|
||||||
@login_required
|
@login_required
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
for i in req["canvas_ids"]:
|
for i in req["canvas_ids"]:
|
||||||
if not UserCanvasService.accessible(i, current_user.id):
|
if not UserCanvasService.accessible(i, current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
|
|
@ -67,7 +67,7 @@ async def rm():
|
||||||
@validate_request("dsl", "title")
|
@validate_request("dsl", "title")
|
||||||
@login_required
|
@login_required
|
||||||
async def save():
|
async def save():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not isinstance(req["dsl"], str):
|
if not isinstance(req["dsl"], str):
|
||||||
req["dsl"] = json.dumps(req["dsl"], ensure_ascii=False)
|
req["dsl"] = json.dumps(req["dsl"], ensure_ascii=False)
|
||||||
req["dsl"] = json.loads(req["dsl"])
|
req["dsl"] = json.loads(req["dsl"])
|
||||||
|
|
@ -126,7 +126,7 @@ def getsse(canvas_id):
|
||||||
@validate_request("id")
|
@validate_request("id")
|
||||||
@login_required
|
@login_required
|
||||||
async def run():
|
async def run():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
query = req.get("query", "")
|
query = req.get("query", "")
|
||||||
files = req.get("files", [])
|
files = req.get("files", [])
|
||||||
inputs = req.get("inputs", {})
|
inputs = req.get("inputs", {})
|
||||||
|
|
@ -183,7 +183,7 @@ async def run():
|
||||||
@validate_request("id", "dsl", "component_id")
|
@validate_request("id", "dsl", "component_id")
|
||||||
@login_required
|
@login_required
|
||||||
async def rerun():
|
async def rerun():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
doc = PipelineOperationLogService.get_documents_info(req["id"])
|
doc = PipelineOperationLogService.get_documents_info(req["id"])
|
||||||
if not doc:
|
if not doc:
|
||||||
return get_data_error_result(message="Document not found.")
|
return get_data_error_result(message="Document not found.")
|
||||||
|
|
@ -221,7 +221,7 @@ def cancel(task_id):
|
||||||
@validate_request("id")
|
@validate_request("id")
|
||||||
@login_required
|
@login_required
|
||||||
async def reset():
|
async def reset():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not UserCanvasService.accessible(req["id"], current_user.id):
|
if not UserCanvasService.accessible(req["id"], current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False, message='Only owner of canvas authorized for this operation.',
|
data=False, message='Only owner of canvas authorized for this operation.',
|
||||||
|
|
@ -279,7 +279,7 @@ def input_form():
|
||||||
@validate_request("id", "component_id", "params")
|
@validate_request("id", "component_id", "params")
|
||||||
@login_required
|
@login_required
|
||||||
async def debug():
|
async def debug():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not UserCanvasService.accessible(req["id"], current_user.id):
|
if not UserCanvasService.accessible(req["id"], current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False, message='Only owner of canvas authorized for this operation.',
|
data=False, message='Only owner of canvas authorized for this operation.',
|
||||||
|
|
@ -311,7 +311,7 @@ async def debug():
|
||||||
@validate_request("db_type", "database", "username", "host", "port", "password")
|
@validate_request("db_type", "database", "username", "host", "port", "password")
|
||||||
@login_required
|
@login_required
|
||||||
async def test_db_connect():
|
async def test_db_connect():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
if req["db_type"] in ["mysql", "mariadb"]:
|
if req["db_type"] in ["mysql", "mariadb"]:
|
||||||
db = MySQLDatabase(req["database"], user=req["username"], host=req["host"], port=req["port"],
|
db = MySQLDatabase(req["database"], user=req["username"], host=req["host"], port=req["port"],
|
||||||
|
|
@ -456,7 +456,7 @@ def list_canvas():
|
||||||
@validate_request("id", "title", "permission")
|
@validate_request("id", "title", "permission")
|
||||||
@login_required
|
@login_required
|
||||||
async def setting():
|
async def setting():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
req["user_id"] = current_user.id
|
req["user_id"] = current_user.id
|
||||||
|
|
||||||
if not UserCanvasService.accessible(req["id"], current_user.id):
|
if not UserCanvasService.accessible(req["id"], current_user.id):
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ from api.db.services.llm_service import LLMBundle
|
||||||
from api.db.services.search_service import SearchService
|
from api.db.services.search_service import SearchService
|
||||||
from api.db.services.user_service import UserTenantService
|
from api.db.services.user_service import UserTenantService
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, server_error_response, validate_request, \
|
from api.utils.api_utils import get_data_error_result, get_json_result, server_error_response, validate_request, \
|
||||||
request_json
|
get_request_json
|
||||||
from rag.app.qa import beAdoc, rmPrefix
|
from rag.app.qa import beAdoc, rmPrefix
|
||||||
from rag.app.tag import label_question
|
from rag.app.tag import label_question
|
||||||
from rag.nlp import rag_tokenizer, search
|
from rag.nlp import rag_tokenizer, search
|
||||||
|
|
@ -42,7 +42,7 @@ from api.apps import login_required, current_user
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id")
|
@validate_request("doc_id")
|
||||||
async def list_chunk():
|
async def list_chunk():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
doc_id = req["doc_id"]
|
doc_id = req["doc_id"]
|
||||||
page = int(req.get("page", 1))
|
page = int(req.get("page", 1))
|
||||||
size = int(req.get("size", 30))
|
size = int(req.get("size", 30))
|
||||||
|
|
@ -123,7 +123,7 @@ def get():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id", "chunk_id", "content_with_weight")
|
@validate_request("doc_id", "chunk_id", "content_with_weight")
|
||||||
async def set():
|
async def set():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
d = {
|
d = {
|
||||||
"id": req["chunk_id"],
|
"id": req["chunk_id"],
|
||||||
"content_with_weight": req["content_with_weight"]}
|
"content_with_weight": req["content_with_weight"]}
|
||||||
|
|
@ -180,7 +180,7 @@ async def set():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("chunk_ids", "available_int", "doc_id")
|
@validate_request("chunk_ids", "available_int", "doc_id")
|
||||||
async def switch():
|
async def switch():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
e, doc = DocumentService.get_by_id(req["doc_id"])
|
e, doc = DocumentService.get_by_id(req["doc_id"])
|
||||||
if not e:
|
if not e:
|
||||||
|
|
@ -200,7 +200,7 @@ async def switch():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("chunk_ids", "doc_id")
|
@validate_request("chunk_ids", "doc_id")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
e, doc = DocumentService.get_by_id(req["doc_id"])
|
e, doc = DocumentService.get_by_id(req["doc_id"])
|
||||||
if not e:
|
if not e:
|
||||||
|
|
@ -224,7 +224,7 @@ async def rm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id", "content_with_weight")
|
@validate_request("doc_id", "content_with_weight")
|
||||||
async def create():
|
async def create():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
chunck_id = xxhash.xxh64((req["content_with_weight"] + req["doc_id"]).encode("utf-8")).hexdigest()
|
chunck_id = xxhash.xxh64((req["content_with_weight"] + req["doc_id"]).encode("utf-8")).hexdigest()
|
||||||
d = {"id": chunck_id, "content_ltks": rag_tokenizer.tokenize(req["content_with_weight"]),
|
d = {"id": chunck_id, "content_ltks": rag_tokenizer.tokenize(req["content_with_weight"]),
|
||||||
"content_with_weight": req["content_with_weight"]}
|
"content_with_weight": req["content_with_weight"]}
|
||||||
|
|
@ -282,7 +282,7 @@ async def create():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("kb_id", "question")
|
@validate_request("kb_id", "question")
|
||||||
async def retrieval_test():
|
async def retrieval_test():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
page = int(req.get("page", 1))
|
page = int(req.get("page", 1))
|
||||||
size = int(req.get("size", 30))
|
size = int(req.get("size", 30))
|
||||||
question = req["question"]
|
question = req["question"]
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ from google_auth_oauthlib.flow import Flow
|
||||||
|
|
||||||
from api.db import InputType
|
from api.db import InputType
|
||||||
from api.db.services.connector_service import ConnectorService, SyncLogsService
|
from api.db.services.connector_service import ConnectorService, SyncLogsService
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, request_json, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, validate_request
|
||||||
from common.constants import RetCode, TaskStatus
|
from common.constants import RetCode, TaskStatus
|
||||||
from common.data_source.config import GOOGLE_DRIVE_WEB_OAUTH_REDIRECT_URI, GMAIL_WEB_OAUTH_REDIRECT_URI, DocumentSource
|
from common.data_source.config import GOOGLE_DRIVE_WEB_OAUTH_REDIRECT_URI, GMAIL_WEB_OAUTH_REDIRECT_URI, DocumentSource
|
||||||
from common.data_source.google_util.constant import GOOGLE_WEB_OAUTH_POPUP_TEMPLATE, GOOGLE_SCOPES
|
from common.data_source.google_util.constant import GOOGLE_WEB_OAUTH_POPUP_TEMPLATE, GOOGLE_SCOPES
|
||||||
|
|
@ -38,7 +38,7 @@ from api.apps import login_required, current_user
|
||||||
@manager.route("/set", methods=["POST"]) # noqa: F821
|
@manager.route("/set", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def set_connector():
|
async def set_connector():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if req.get("id"):
|
if req.get("id"):
|
||||||
conn = {fld: req[fld] for fld in ["prune_freq", "refresh_freq", "config", "timeout_secs"] if fld in req}
|
conn = {fld: req[fld] for fld in ["prune_freq", "refresh_freq", "config", "timeout_secs"] if fld in req}
|
||||||
ConnectorService.update_by_id(req["id"], conn)
|
ConnectorService.update_by_id(req["id"], conn)
|
||||||
|
|
@ -90,7 +90,7 @@ def list_logs(connector_id):
|
||||||
@manager.route("/<connector_id>/resume", methods=["PUT"]) # noqa: F821
|
@manager.route("/<connector_id>/resume", methods=["PUT"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def resume(connector_id):
|
async def resume(connector_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if req.get("resume"):
|
if req.get("resume"):
|
||||||
ConnectorService.resume(connector_id, TaskStatus.SCHEDULE)
|
ConnectorService.resume(connector_id, TaskStatus.SCHEDULE)
|
||||||
else:
|
else:
|
||||||
|
|
@ -102,7 +102,7 @@ async def resume(connector_id):
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("kb_id")
|
@validate_request("kb_id")
|
||||||
async def rebuild(connector_id):
|
async def rebuild(connector_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
err = ConnectorService.rebuild(req["kb_id"], connector_id, current_user.id)
|
err = ConnectorService.rebuild(req["kb_id"], connector_id, current_user.id)
|
||||||
if err:
|
if err:
|
||||||
return get_json_result(data=False, message=err, code=RetCode.SERVER_ERROR)
|
return get_json_result(data=False, message=err, code=RetCode.SERVER_ERROR)
|
||||||
|
|
@ -211,7 +211,7 @@ async def start_google_web_oauth():
|
||||||
message="Google OAuth redirect URI is not configured on the server.",
|
message="Google OAuth redirect URI is not configured on the server.",
|
||||||
)
|
)
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
raw_credentials = req.get("credentials", "")
|
raw_credentials = req.get("credentials", "")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ from api.db.services.llm_service import LLMBundle
|
||||||
from api.db.services.search_service import SearchService
|
from api.db.services.search_service import SearchService
|
||||||
from api.db.services.tenant_llm_service import TenantLLMService
|
from api.db.services.tenant_llm_service import TenantLLMService
|
||||||
from api.db.services.user_service import TenantService, UserTenantService
|
from api.db.services.user_service import TenantService, UserTenantService
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from rag.prompts.template import load_prompt
|
from rag.prompts.template import load_prompt
|
||||||
from rag.prompts.generator import chunks_format
|
from rag.prompts.generator import chunks_format
|
||||||
from common.constants import RetCode, LLMType
|
from common.constants import RetCode, LLMType
|
||||||
|
|
@ -35,7 +35,7 @@ from common.constants import RetCode, LLMType
|
||||||
@manager.route("/set", methods=["POST"]) # noqa: F821
|
@manager.route("/set", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def set_conversation():
|
async def set_conversation():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
conv_id = req.get("conversation_id")
|
conv_id = req.get("conversation_id")
|
||||||
is_new = req.get("is_new")
|
is_new = req.get("is_new")
|
||||||
name = req.get("name", "New conversation")
|
name = req.get("name", "New conversation")
|
||||||
|
|
@ -129,7 +129,7 @@ def getsse(dialog_id):
|
||||||
@manager.route("/rm", methods=["POST"]) # noqa: F821
|
@manager.route("/rm", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
conv_ids = req["conversation_ids"]
|
conv_ids = req["conversation_ids"]
|
||||||
try:
|
try:
|
||||||
for cid in conv_ids:
|
for cid in conv_ids:
|
||||||
|
|
@ -167,7 +167,7 @@ async def list_conversation():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("conversation_id", "messages")
|
@validate_request("conversation_id", "messages")
|
||||||
async def completion():
|
async def completion():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
msg = []
|
msg = []
|
||||||
for m in req["messages"]:
|
for m in req["messages"]:
|
||||||
if m["role"] == "system":
|
if m["role"] == "system":
|
||||||
|
|
@ -252,7 +252,7 @@ async def completion():
|
||||||
@manager.route("/tts", methods=["POST"]) # noqa: F821
|
@manager.route("/tts", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def tts():
|
async def tts():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
text = req["text"]
|
text = req["text"]
|
||||||
|
|
||||||
tenants = TenantService.get_info_by(current_user.id)
|
tenants = TenantService.get_info_by(current_user.id)
|
||||||
|
|
@ -285,7 +285,7 @@ async def tts():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("conversation_id", "message_id")
|
@validate_request("conversation_id", "message_id")
|
||||||
async def delete_msg():
|
async def delete_msg():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
e, conv = ConversationService.get_by_id(req["conversation_id"])
|
e, conv = ConversationService.get_by_id(req["conversation_id"])
|
||||||
if not e:
|
if not e:
|
||||||
return get_data_error_result(message="Conversation not found!")
|
return get_data_error_result(message="Conversation not found!")
|
||||||
|
|
@ -308,7 +308,7 @@ async def delete_msg():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("conversation_id", "message_id")
|
@validate_request("conversation_id", "message_id")
|
||||||
async def thumbup():
|
async def thumbup():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
e, conv = ConversationService.get_by_id(req["conversation_id"])
|
e, conv = ConversationService.get_by_id(req["conversation_id"])
|
||||||
if not e:
|
if not e:
|
||||||
return get_data_error_result(message="Conversation not found!")
|
return get_data_error_result(message="Conversation not found!")
|
||||||
|
|
@ -335,7 +335,7 @@ async def thumbup():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("question", "kb_ids")
|
@validate_request("question", "kb_ids")
|
||||||
async def ask_about():
|
async def ask_about():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
uid = current_user.id
|
uid = current_user.id
|
||||||
|
|
||||||
search_id = req.get("search_id", "")
|
search_id = req.get("search_id", "")
|
||||||
|
|
@ -367,7 +367,7 @@ async def ask_about():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("question", "kb_ids")
|
@validate_request("question", "kb_ids")
|
||||||
async def mindmap():
|
async def mindmap():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
search_id = req.get("search_id", "")
|
search_id = req.get("search_id", "")
|
||||||
search_app = SearchService.get_detail(search_id) if search_id else {}
|
search_app = SearchService.get_detail(search_id) if search_id else {}
|
||||||
search_config = search_app.get("search_config", {}) if search_app else {}
|
search_config = search_app.get("search_config", {}) if search_app else {}
|
||||||
|
|
@ -385,7 +385,7 @@ async def mindmap():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("question")
|
@validate_request("question")
|
||||||
async def related_questions():
|
async def related_questions():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
search_id = req.get("search_id", "")
|
search_id = req.get("search_id", "")
|
||||||
search_config = {}
|
search_config = {}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ from common.constants import StatusEnum
|
||||||
from api.db.services.tenant_llm_service import TenantLLMService
|
from api.db.services.tenant_llm_service import TenantLLMService
|
||||||
from api.db.services.knowledgebase_service import KnowledgebaseService
|
from api.db.services.knowledgebase_service import KnowledgebaseService
|
||||||
from api.db.services.user_service import TenantService, UserTenantService
|
from api.db.services.user_service import TenantService, UserTenantService
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from common.constants import RetCode
|
from common.constants import RetCode
|
||||||
from api.apps import login_required, current_user
|
from api.apps import login_required, current_user
|
||||||
|
|
@ -31,7 +31,7 @@ from api.apps import login_required, current_user
|
||||||
@validate_request("prompt_config")
|
@validate_request("prompt_config")
|
||||||
@login_required
|
@login_required
|
||||||
async def set_dialog():
|
async def set_dialog():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
dialog_id = req.get("dialog_id", "")
|
dialog_id = req.get("dialog_id", "")
|
||||||
is_create = not dialog_id
|
is_create = not dialog_id
|
||||||
name = req.get("name", "New Dialog")
|
name = req.get("name", "New Dialog")
|
||||||
|
|
@ -180,7 +180,7 @@ async def list_dialogs_next():
|
||||||
else:
|
else:
|
||||||
desc = True
|
desc = True
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
owner_ids = req.get("owner_ids", [])
|
owner_ids = req.get("owner_ids", [])
|
||||||
try:
|
try:
|
||||||
if not owner_ids:
|
if not owner_ids:
|
||||||
|
|
@ -208,7 +208,7 @@ async def list_dialogs_next():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("dialog_ids")
|
@validate_request("dialog_ids")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
dialog_list=[]
|
dialog_list=[]
|
||||||
tenants = UserTenantService.query(user_id=current_user.id)
|
tenants = UserTenantService.query(user_id=current_user.id)
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ from api.utils.api_utils import (
|
||||||
get_data_error_result,
|
get_data_error_result,
|
||||||
get_json_result,
|
get_json_result,
|
||||||
server_error_response,
|
server_error_response,
|
||||||
validate_request, request_json,
|
validate_request, get_request_json,
|
||||||
)
|
)
|
||||||
from api.utils.file_utils import filename_type, thumbnail
|
from api.utils.file_utils import filename_type, thumbnail
|
||||||
from common.file_utils import get_project_base_directory
|
from common.file_utils import get_project_base_directory
|
||||||
|
|
@ -153,7 +153,7 @@ async def web_crawl():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("name", "kb_id")
|
@validate_request("name", "kb_id")
|
||||||
async def create():
|
async def create():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
kb_id = req["kb_id"]
|
kb_id = req["kb_id"]
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR)
|
return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR)
|
||||||
|
|
@ -230,7 +230,7 @@ async def list_docs():
|
||||||
create_time_from = int(request.args.get("create_time_from", 0))
|
create_time_from = int(request.args.get("create_time_from", 0))
|
||||||
create_time_to = int(request.args.get("create_time_to", 0))
|
create_time_to = int(request.args.get("create_time_to", 0))
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
run_status = req.get("run_status", [])
|
run_status = req.get("run_status", [])
|
||||||
if run_status:
|
if run_status:
|
||||||
|
|
@ -271,7 +271,7 @@ async def list_docs():
|
||||||
@manager.route("/filter", methods=["POST"]) # noqa: F821
|
@manager.route("/filter", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def get_filter():
|
async def get_filter():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
kb_id = req.get("kb_id")
|
kb_id = req.get("kb_id")
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
|
|
@ -309,7 +309,7 @@ async def get_filter():
|
||||||
@manager.route("/infos", methods=["POST"]) # noqa: F821
|
@manager.route("/infos", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def doc_infos():
|
async def doc_infos():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
doc_ids = req["doc_ids"]
|
doc_ids = req["doc_ids"]
|
||||||
for doc_id in doc_ids:
|
for doc_id in doc_ids:
|
||||||
if not DocumentService.accessible(doc_id, current_user.id):
|
if not DocumentService.accessible(doc_id, current_user.id):
|
||||||
|
|
@ -341,7 +341,7 @@ def thumbnails():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_ids", "status")
|
@validate_request("doc_ids", "status")
|
||||||
async def change_status():
|
async def change_status():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
doc_ids = req.get("doc_ids", [])
|
doc_ids = req.get("doc_ids", [])
|
||||||
status = str(req.get("status", ""))
|
status = str(req.get("status", ""))
|
||||||
|
|
||||||
|
|
@ -381,7 +381,7 @@ async def change_status():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id")
|
@validate_request("doc_id")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
doc_ids = req["doc_id"]
|
doc_ids = req["doc_id"]
|
||||||
if isinstance(doc_ids, str):
|
if isinstance(doc_ids, str):
|
||||||
doc_ids = [doc_ids]
|
doc_ids = [doc_ids]
|
||||||
|
|
@ -402,7 +402,7 @@ async def rm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_ids", "run")
|
@validate_request("doc_ids", "run")
|
||||||
async def run():
|
async def run():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
for doc_id in req["doc_ids"]:
|
for doc_id in req["doc_ids"]:
|
||||||
if not DocumentService.accessible(doc_id, current_user.id):
|
if not DocumentService.accessible(doc_id, current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
||||||
|
|
@ -449,7 +449,7 @@ async def run():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id", "name")
|
@validate_request("doc_id", "name")
|
||||||
async def rename():
|
async def rename():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
||||||
try:
|
try:
|
||||||
|
|
@ -539,7 +539,7 @@ async def download_attachment(attachment_id):
|
||||||
@validate_request("doc_id")
|
@validate_request("doc_id")
|
||||||
async def change_parser():
|
async def change_parser():
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
||||||
|
|
||||||
|
|
@ -624,7 +624,7 @@ async def upload_and_parse():
|
||||||
@manager.route("/parse", methods=["POST"]) # noqa: F821
|
@manager.route("/parse", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def parse():
|
async def parse():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
url = req.get("url", "")
|
url = req.get("url", "")
|
||||||
if url:
|
if url:
|
||||||
if not is_valid_url(url):
|
if not is_valid_url(url):
|
||||||
|
|
@ -680,7 +680,7 @@ async def parse():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("doc_id", "meta")
|
@validate_request("doc_id", "meta")
|
||||||
async def set_meta():
|
async def set_meta():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
if not DocumentService.accessible(req["doc_id"], current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ from api.db.services.file_service import FileService
|
||||||
|
|
||||||
from api.apps import login_required, current_user
|
from api.apps import login_required, current_user
|
||||||
from api.db.services.knowledgebase_service import KnowledgebaseService
|
from api.db.services.knowledgebase_service import KnowledgebaseService
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from common.constants import RetCode
|
from common.constants import RetCode
|
||||||
from api.db import FileType
|
from api.db import FileType
|
||||||
|
|
@ -32,7 +32,7 @@ from api.db.services.document_service import DocumentService
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("file_ids", "kb_ids")
|
@validate_request("file_ids", "kb_ids")
|
||||||
async def convert():
|
async def convert():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
kb_ids = req["kb_ids"]
|
kb_ids = req["kb_ids"]
|
||||||
file_ids = req["file_ids"]
|
file_ids = req["file_ids"]
|
||||||
file2documents = []
|
file2documents = []
|
||||||
|
|
@ -102,7 +102,7 @@ async def convert():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("file_ids")
|
@validate_request("file_ids")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
file_ids = req["file_ids"]
|
file_ids = req["file_ids"]
|
||||||
if not file_ids:
|
if not file_ids:
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ from common.constants import RetCode, FileSource
|
||||||
from api.db import FileType
|
from api.db import FileType
|
||||||
from api.db.services import duplicate_name
|
from api.db.services import duplicate_name
|
||||||
from api.db.services.file_service import FileService
|
from api.db.services.file_service import FileService
|
||||||
from api.utils.api_utils import get_json_result, request_json
|
from api.utils.api_utils import get_json_result, get_request_json
|
||||||
from api.utils.file_utils import filename_type
|
from api.utils.file_utils import filename_type
|
||||||
from api.utils.web_utils import CONTENT_TYPE_MAP
|
from api.utils.web_utils import CONTENT_TYPE_MAP
|
||||||
from common import settings
|
from common import settings
|
||||||
|
|
@ -124,7 +124,7 @@ async def upload():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("name")
|
@validate_request("name")
|
||||||
async def create():
|
async def create():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
pf_id = req.get("parent_id")
|
pf_id = req.get("parent_id")
|
||||||
input_file_type = req.get("type")
|
input_file_type = req.get("type")
|
||||||
if not pf_id:
|
if not pf_id:
|
||||||
|
|
@ -239,7 +239,7 @@ def get_all_parent_folders():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("file_ids")
|
@validate_request("file_ids")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
file_ids = req["file_ids"]
|
file_ids = req["file_ids"]
|
||||||
|
|
||||||
def _delete_single_file(file):
|
def _delete_single_file(file):
|
||||||
|
|
@ -300,7 +300,7 @@ async def rm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("file_id", "name")
|
@validate_request("file_id", "name")
|
||||||
async def rename():
|
async def rename():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(req["file_id"])
|
e, file = FileService.get_by_id(req["file_id"])
|
||||||
if not e:
|
if not e:
|
||||||
|
|
@ -369,7 +369,7 @@ async def get(file_id):
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("src_file_ids", "dest_file_id")
|
@validate_request("src_file_ids", "dest_file_id")
|
||||||
async def move():
|
async def move():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
file_ids = req["src_file_ids"]
|
file_ids = req["src_file_ids"]
|
||||||
dest_parent_id = req["dest_file_id"]
|
dest_parent_id = req["dest_file_id"]
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ from api.db.services.pipeline_operation_log_service import PipelineOperationLogS
|
||||||
from api.db.services.task_service import TaskService, GRAPH_RAPTOR_FAKE_DOC_ID
|
from api.db.services.task_service import TaskService, GRAPH_RAPTOR_FAKE_DOC_ID
|
||||||
from api.db.services.user_service import TenantService, UserTenantService
|
from api.db.services.user_service import TenantService, UserTenantService
|
||||||
from api.utils.api_utils import get_error_data_result, server_error_response, get_data_error_result, validate_request, not_allowed_parameters, \
|
from api.utils.api_utils import get_error_data_result, server_error_response, get_data_error_result, validate_request, not_allowed_parameters, \
|
||||||
request_json
|
get_request_json
|
||||||
from api.db import VALID_FILE_TYPES
|
from api.db import VALID_FILE_TYPES
|
||||||
from api.db.services.knowledgebase_service import KnowledgebaseService
|
from api.db.services.knowledgebase_service import KnowledgebaseService
|
||||||
from api.db.db_models import File
|
from api.db.db_models import File
|
||||||
|
|
@ -48,7 +48,7 @@ from api.apps import login_required, current_user
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("name")
|
@validate_request("name")
|
||||||
async def create():
|
async def create():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
e, res = KnowledgebaseService.create_with_name(
|
e, res = KnowledgebaseService.create_with_name(
|
||||||
name = req.pop("name", None),
|
name = req.pop("name", None),
|
||||||
tenant_id = current_user.id,
|
tenant_id = current_user.id,
|
||||||
|
|
@ -72,7 +72,7 @@ async def create():
|
||||||
@validate_request("kb_id", "name", "description", "parser_id")
|
@validate_request("kb_id", "name", "description", "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")
|
||||||
async def update():
|
async def update():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not isinstance(req["name"], str):
|
if not isinstance(req["name"], str):
|
||||||
return get_data_error_result(message="Dataset name must be string.")
|
return get_data_error_result(message="Dataset name must be string.")
|
||||||
if req["name"].strip() == "":
|
if req["name"].strip() == "":
|
||||||
|
|
@ -182,7 +182,7 @@ async def list_kbs():
|
||||||
else:
|
else:
|
||||||
desc = True
|
desc = True
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
owner_ids = req.get("owner_ids", [])
|
owner_ids = req.get("owner_ids", [])
|
||||||
try:
|
try:
|
||||||
if not owner_ids:
|
if not owner_ids:
|
||||||
|
|
@ -209,7 +209,7 @@ async def list_kbs():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("kb_id")
|
@validate_request("kb_id")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not KnowledgebaseService.accessible4deletion(req["kb_id"], current_user.id):
|
if not KnowledgebaseService.accessible4deletion(req["kb_id"], current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False,
|
data=False,
|
||||||
|
|
@ -286,7 +286,7 @@ def list_tags_from_kbs():
|
||||||
@manager.route('/<kb_id>/rm_tags', methods=['POST']) # noqa: F821
|
@manager.route('/<kb_id>/rm_tags', methods=['POST']) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def rm_tags(kb_id):
|
async def rm_tags(kb_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not KnowledgebaseService.accessible(kb_id, current_user.id):
|
if not KnowledgebaseService.accessible(kb_id, current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False,
|
data=False,
|
||||||
|
|
@ -306,7 +306,7 @@ async def rm_tags(kb_id):
|
||||||
@manager.route('/<kb_id>/rename_tag', methods=['POST']) # noqa: F821
|
@manager.route('/<kb_id>/rename_tag', methods=['POST']) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def rename_tags(kb_id):
|
async def rename_tags(kb_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not KnowledgebaseService.accessible(kb_id, current_user.id):
|
if not KnowledgebaseService.accessible(kb_id, current_user.id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False,
|
data=False,
|
||||||
|
|
@ -428,7 +428,7 @@ async def list_pipeline_logs():
|
||||||
if create_date_to > create_date_from:
|
if create_date_to > create_date_from:
|
||||||
return get_data_error_result(message="Create data filter is abnormal.")
|
return get_data_error_result(message="Create data filter is abnormal.")
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
operation_status = req.get("operation_status", [])
|
operation_status = req.get("operation_status", [])
|
||||||
if operation_status:
|
if operation_status:
|
||||||
|
|
@ -470,7 +470,7 @@ async def list_pipeline_dataset_logs():
|
||||||
if create_date_to > create_date_from:
|
if create_date_to > create_date_from:
|
||||||
return get_data_error_result(message="Create data filter is abnormal.")
|
return get_data_error_result(message="Create data filter is abnormal.")
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
operation_status = req.get("operation_status", [])
|
operation_status = req.get("operation_status", [])
|
||||||
if operation_status:
|
if operation_status:
|
||||||
|
|
@ -492,7 +492,7 @@ async def delete_pipeline_logs():
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR)
|
return get_json_result(data=False, message='Lack of "KB ID"', code=RetCode.ARGUMENT_ERROR)
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
log_ids = req.get("log_ids", [])
|
log_ids = req.get("log_ids", [])
|
||||||
|
|
||||||
PipelineOperationLogService.delete_by_ids(log_ids)
|
PipelineOperationLogService.delete_by_ids(log_ids)
|
||||||
|
|
@ -517,7 +517,7 @@ def pipeline_log_detail():
|
||||||
@manager.route("/run_graphrag", methods=["POST"]) # noqa: F821
|
@manager.route("/run_graphrag", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def run_graphrag():
|
async def run_graphrag():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
kb_id = req.get("kb_id", "")
|
kb_id = req.get("kb_id", "")
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
|
|
@ -586,7 +586,7 @@ def trace_graphrag():
|
||||||
@manager.route("/run_raptor", methods=["POST"]) # noqa: F821
|
@manager.route("/run_raptor", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def run_raptor():
|
async def run_raptor():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
kb_id = req.get("kb_id", "")
|
kb_id = req.get("kb_id", "")
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
|
|
@ -655,7 +655,7 @@ def trace_raptor():
|
||||||
@manager.route("/run_mindmap", methods=["POST"]) # noqa: F821
|
@manager.route("/run_mindmap", methods=["POST"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
async def run_mindmap():
|
async def run_mindmap():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
kb_id = req.get("kb_id", "")
|
kb_id = req.get("kb_id", "")
|
||||||
if not kb_id:
|
if not kb_id:
|
||||||
|
|
@ -861,7 +861,7 @@ async def check_embedding():
|
||||||
def _clean(s: str) -> str:
|
def _clean(s: str) -> str:
|
||||||
s = re.sub(r"</?(table|td|caption|tr|th)( [^<>]{0,12})?>", " ", s or "")
|
s = re.sub(r"</?(table|td|caption|tr|th)( [^<>]{0,12})?>", " ", s or "")
|
||||||
return s if s else "None"
|
return s if s else "None"
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
kb_id = req.get("kb_id", "")
|
kb_id = req.get("kb_id", "")
|
||||||
embd_id = req.get("embd_id", "")
|
embd_id = req.get("embd_id", "")
|
||||||
n = int(req.get("check_num", 5))
|
n = int(req.get("check_num", 5))
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,14 @@ from langfuse import Langfuse
|
||||||
|
|
||||||
from api.db.db_models import DB
|
from api.db.db_models import DB
|
||||||
from api.db.services.langfuse_service import TenantLangfuseService
|
from api.db.services.langfuse_service import TenantLangfuseService
|
||||||
from api.utils.api_utils import get_error_data_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_error_data_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
|
|
||||||
|
|
||||||
@manager.route("/api_key", methods=["POST", "PUT"]) # noqa: F821
|
@manager.route("/api_key", methods=["POST", "PUT"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("secret_key", "public_key", "host")
|
@validate_request("secret_key", "public_key", "host")
|
||||||
async def set_api_key():
|
async def set_api_key():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
secret_key = req.get("secret_key", "")
|
secret_key = req.get("secret_key", "")
|
||||||
public_key = req.get("public_key", "")
|
public_key = req.get("public_key", "")
|
||||||
host = req.get("host", "")
|
host = req.get("host", "")
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ from quart import request
|
||||||
from api.apps import login_required, current_user
|
from api.apps import login_required, current_user
|
||||||
from api.db.services.tenant_llm_service import LLMFactoriesService, TenantLLMService
|
from api.db.services.tenant_llm_service import LLMFactoriesService, TenantLLMService
|
||||||
from api.db.services.llm_service import LLMService
|
from api.db.services.llm_service import LLMService
|
||||||
from api.utils.api_utils import get_allowed_llm_factories, get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_allowed_llm_factories, get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from common.constants import StatusEnum, LLMType
|
from common.constants import StatusEnum, LLMType
|
||||||
from api.db.db_models import TenantLLM
|
from api.db.db_models import TenantLLM
|
||||||
from rag.utils.base64_image import test_image
|
from rag.utils.base64_image import test_image
|
||||||
|
|
@ -53,7 +53,7 @@ def factories():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("llm_factory", "api_key")
|
@validate_request("llm_factory", "api_key")
|
||||||
async def set_api_key():
|
async def set_api_key():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
# test if api key works
|
# test if api key works
|
||||||
chat_passed, embd_passed, rerank_passed = False, False, False
|
chat_passed, embd_passed, rerank_passed = False, False, False
|
||||||
factory = req["llm_factory"]
|
factory = req["llm_factory"]
|
||||||
|
|
@ -123,7 +123,7 @@ async def set_api_key():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("llm_factory")
|
@validate_request("llm_factory")
|
||||||
async def add_llm():
|
async def add_llm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
factory = req["llm_factory"]
|
factory = req["llm_factory"]
|
||||||
api_key = req.get("api_key", "x")
|
api_key = req.get("api_key", "x")
|
||||||
llm_name = req.get("llm_name")
|
llm_name = req.get("llm_name")
|
||||||
|
|
@ -268,7 +268,7 @@ async def add_llm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("llm_factory", "llm_name")
|
@validate_request("llm_factory", "llm_name")
|
||||||
async def delete_llm():
|
async def delete_llm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
TenantLLMService.filter_delete([TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"], TenantLLM.llm_name == req["llm_name"]])
|
TenantLLMService.filter_delete([TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"], TenantLLM.llm_name == req["llm_name"]])
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
|
|
||||||
|
|
@ -277,7 +277,7 @@ async def delete_llm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("llm_factory", "llm_name")
|
@validate_request("llm_factory", "llm_name")
|
||||||
async def enable_llm():
|
async def enable_llm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
TenantLLMService.filter_update(
|
TenantLLMService.filter_update(
|
||||||
[TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"], TenantLLM.llm_name == req["llm_name"]], {"status": str(req.get("status", "1"))}
|
[TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"], TenantLLM.llm_name == req["llm_name"]], {"status": str(req.get("status", "1"))}
|
||||||
)
|
)
|
||||||
|
|
@ -288,7 +288,7 @@ async def enable_llm():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("llm_factory")
|
@validate_request("llm_factory")
|
||||||
async def delete_factory():
|
async def delete_factory():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
TenantLLMService.filter_delete([TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"]])
|
TenantLLMService.filter_delete([TenantLLM.tenant_id == current_user.id, TenantLLM.llm_factory == req["llm_factory"]])
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ from api.db.services.user_service import TenantService
|
||||||
from common.constants import RetCode, VALID_MCP_SERVER_TYPES
|
from common.constants import RetCode, VALID_MCP_SERVER_TYPES
|
||||||
|
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, get_mcp_tools, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_mcp_tools, get_request_json, server_error_response, validate_request
|
||||||
from api.utils.web_utils import get_float, safe_json_parse
|
from api.utils.web_utils import get_float, safe_json_parse
|
||||||
from common.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions
|
from common.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions
|
||||||
|
|
||||||
|
|
@ -39,7 +39,7 @@ async def list_mcp() -> Response:
|
||||||
else:
|
else:
|
||||||
desc = True
|
desc = True
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_ids = req.get("mcp_ids", [])
|
mcp_ids = req.get("mcp_ids", [])
|
||||||
try:
|
try:
|
||||||
servers = MCPServerService.get_servers(current_user.id, mcp_ids, 0, 0, orderby, desc, keywords) or []
|
servers = MCPServerService.get_servers(current_user.id, mcp_ids, 0, 0, orderby, desc, keywords) or []
|
||||||
|
|
@ -72,7 +72,7 @@ def detail() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("name", "url", "server_type")
|
@validate_request("name", "url", "server_type")
|
||||||
async def create() -> Response:
|
async def create() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
server_type = req.get("server_type", "")
|
server_type = req.get("server_type", "")
|
||||||
if server_type not in VALID_MCP_SERVER_TYPES:
|
if server_type not in VALID_MCP_SERVER_TYPES:
|
||||||
|
|
@ -127,7 +127,7 @@ async def create() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_id")
|
@validate_request("mcp_id")
|
||||||
async def update() -> Response:
|
async def update() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
mcp_id = req.get("mcp_id", "")
|
mcp_id = req.get("mcp_id", "")
|
||||||
e, mcp_server = MCPServerService.get_by_id(mcp_id)
|
e, mcp_server = MCPServerService.get_by_id(mcp_id)
|
||||||
|
|
@ -183,7 +183,7 @@ async def update() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_ids")
|
@validate_request("mcp_ids")
|
||||||
async def rm() -> Response:
|
async def rm() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_ids = req.get("mcp_ids", [])
|
mcp_ids = req.get("mcp_ids", [])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -201,7 +201,7 @@ async def rm() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcpServers")
|
@validate_request("mcpServers")
|
||||||
async def import_multiple() -> Response:
|
async def import_multiple() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
servers = req.get("mcpServers", {})
|
servers = req.get("mcpServers", {})
|
||||||
if not servers:
|
if not servers:
|
||||||
return get_data_error_result(message="No MCP servers provided.")
|
return get_data_error_result(message="No MCP servers provided.")
|
||||||
|
|
@ -268,7 +268,7 @@ async def import_multiple() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_ids")
|
@validate_request("mcp_ids")
|
||||||
async def export_multiple() -> Response:
|
async def export_multiple() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_ids = req.get("mcp_ids", [])
|
mcp_ids = req.get("mcp_ids", [])
|
||||||
|
|
||||||
if not mcp_ids:
|
if not mcp_ids:
|
||||||
|
|
@ -300,7 +300,7 @@ async def export_multiple() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_ids")
|
@validate_request("mcp_ids")
|
||||||
async def list_tools() -> Response:
|
async def list_tools() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_ids = req.get("mcp_ids", [])
|
mcp_ids = req.get("mcp_ids", [])
|
||||||
if not mcp_ids:
|
if not mcp_ids:
|
||||||
return get_data_error_result(message="No MCP server IDs provided.")
|
return get_data_error_result(message="No MCP server IDs provided.")
|
||||||
|
|
@ -347,7 +347,7 @@ async def list_tools() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_id", "tool_name", "arguments")
|
@validate_request("mcp_id", "tool_name", "arguments")
|
||||||
async def test_tool() -> Response:
|
async def test_tool() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_id = req.get("mcp_id", "")
|
mcp_id = req.get("mcp_id", "")
|
||||||
if not mcp_id:
|
if not mcp_id:
|
||||||
return get_data_error_result(message="No MCP server ID provided.")
|
return get_data_error_result(message="No MCP server ID provided.")
|
||||||
|
|
@ -380,7 +380,7 @@ async def test_tool() -> Response:
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("mcp_id", "tools")
|
@validate_request("mcp_id", "tools")
|
||||||
async def cache_tool() -> Response:
|
async def cache_tool() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
mcp_id = req.get("mcp_id", "")
|
mcp_id = req.get("mcp_id", "")
|
||||||
if not mcp_id:
|
if not mcp_id:
|
||||||
return get_data_error_result(message="No MCP server ID provided.")
|
return get_data_error_result(message="No MCP server ID provided.")
|
||||||
|
|
@ -403,7 +403,7 @@ async def cache_tool() -> Response:
|
||||||
@manager.route("/test_mcp", methods=["POST"]) # noqa: F821
|
@manager.route("/test_mcp", methods=["POST"]) # noqa: F821
|
||||||
@validate_request("url", "server_type")
|
@validate_request("url", "server_type")
|
||||||
async def test_mcp() -> Response:
|
async def test_mcp() -> Response:
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
url = req.get("url", "")
|
url = req.get("url", "")
|
||||||
if not url:
|
if not url:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ from api.db.services.canvas_service import UserCanvasService
|
||||||
from api.db.services.user_canvas_version import UserCanvasVersionService
|
from api.db.services.user_canvas_version import UserCanvasVersionService
|
||||||
from common.constants import RetCode
|
from common.constants import RetCode
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from api.utils.api_utils import get_data_error_result, get_error_data_result, get_json_result, request_json, token_required
|
from api.utils.api_utils import get_data_error_result, get_error_data_result, get_json_result, get_request_json, token_required
|
||||||
from api.utils.api_utils import get_result
|
from api.utils.api_utils import get_result
|
||||||
from quart import request, Response
|
from quart import request, Response
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ def list_agents(tenant_id):
|
||||||
@manager.route("/agents", methods=["POST"]) # noqa: F821
|
@manager.route("/agents", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def create_agent(tenant_id: str):
|
async def create_agent(tenant_id: str):
|
||||||
req: dict[str, Any] = cast(dict[str, Any], await request_json())
|
req: dict[str, Any] = cast(dict[str, Any], await get_request_json())
|
||||||
req["user_id"] = tenant_id
|
req["user_id"] = tenant_id
|
||||||
|
|
||||||
if req.get("dsl") is not None:
|
if req.get("dsl") is not None:
|
||||||
|
|
@ -90,7 +90,7 @@ async def create_agent(tenant_id: str):
|
||||||
@manager.route("/agents/<agent_id>", methods=["PUT"]) # noqa: F821
|
@manager.route("/agents/<agent_id>", methods=["PUT"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def update_agent(tenant_id: str, agent_id: str):
|
async def update_agent(tenant_id: str, agent_id: str):
|
||||||
req: dict[str, Any] = {k: v for k, v in cast(dict[str, Any], (await request_json())).items() if v is not None}
|
req: dict[str, Any] = {k: v for k, v in cast(dict[str, Any], (await get_request_json())).items() if v is not None}
|
||||||
req["user_id"] = tenant_id
|
req["user_id"] = tenant_id
|
||||||
|
|
||||||
if req.get("dsl") is not None:
|
if req.get("dsl") is not None:
|
||||||
|
|
@ -136,7 +136,7 @@ def delete_agent(tenant_id: str, agent_id: str):
|
||||||
@manager.route('/webhook/<agent_id>', methods=['POST']) # noqa: F821
|
@manager.route('/webhook/<agent_id>', methods=['POST']) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def webhook(tenant_id: str, agent_id: str):
|
async def webhook(tenant_id: str, agent_id: str):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not UserCanvasService.accessible(req["id"], tenant_id):
|
if not UserCanvasService.accessible(req["id"], tenant_id):
|
||||||
return get_json_result(
|
return get_json_result(
|
||||||
data=False, message='Only owner of canvas authorized for this operation.',
|
data=False, message='Only owner of canvas authorized for this operation.',
|
||||||
|
|
|
||||||
|
|
@ -21,13 +21,13 @@ from api.db.services.tenant_llm_service import TenantLLMService
|
||||||
from api.db.services.user_service import TenantService
|
from api.db.services.user_service import TenantService
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from common.constants import RetCode, StatusEnum
|
from common.constants import RetCode, StatusEnum
|
||||||
from api.utils.api_utils import check_duplicate_ids, get_error_data_result, get_result, token_required, request_json
|
from api.utils.api_utils import check_duplicate_ids, get_error_data_result, get_result, token_required, get_request_json
|
||||||
|
|
||||||
|
|
||||||
@manager.route("/chats", methods=["POST"]) # noqa: F821
|
@manager.route("/chats", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def create(tenant_id):
|
async def create(tenant_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
ids = [i for i in req.get("dataset_ids", []) if i]
|
ids = [i for i in req.get("dataset_ids", []) if i]
|
||||||
for kb_id in ids:
|
for kb_id in ids:
|
||||||
kbs = KnowledgebaseService.accessible(kb_id=kb_id, user_id=tenant_id)
|
kbs = KnowledgebaseService.accessible(kb_id=kb_id, user_id=tenant_id)
|
||||||
|
|
@ -146,7 +146,7 @@ async def create(tenant_id):
|
||||||
async def update(tenant_id, chat_id):
|
async 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_error_data_result(message="You do not own the chat")
|
return get_error_data_result(message="You do not own the chat")
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
ids = req.get("dataset_ids", [])
|
ids = req.get("dataset_ids", [])
|
||||||
if "show_quotation" in req:
|
if "show_quotation" in req:
|
||||||
req["do_refer"] = req.pop("show_quotation")
|
req["do_refer"] = req.pop("show_quotation")
|
||||||
|
|
@ -229,7 +229,7 @@ async def update(tenant_id, chat_id):
|
||||||
async def delete_chats(tenant_id):
|
async def delete_chats(tenant_id):
|
||||||
errors = []
|
errors = []
|
||||||
success_count = 0
|
success_count = 0
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req:
|
if not req:
|
||||||
ids = None
|
ids = None
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from quart import jsonify
|
||||||
from api.db.services.document_service import DocumentService
|
from api.db.services.document_service import DocumentService
|
||||||
from api.db.services.knowledgebase_service import KnowledgebaseService
|
from api.db.services.knowledgebase_service import KnowledgebaseService
|
||||||
from api.db.services.llm_service import LLMBundle
|
from api.db.services.llm_service import LLMBundle
|
||||||
from api.utils.api_utils import apikey_required, build_error_result, request_json, validate_request
|
from api.utils.api_utils import apikey_required, build_error_result, get_request_json, validate_request
|
||||||
from rag.app.tag import label_question
|
from rag.app.tag import label_question
|
||||||
from api.db.services.dialog_service import meta_filter, convert_conditions
|
from api.db.services.dialog_service import meta_filter, convert_conditions
|
||||||
from common.constants import RetCode, LLMType
|
from common.constants import RetCode, LLMType
|
||||||
|
|
@ -113,7 +113,7 @@ async def retrieval(tenant_id):
|
||||||
404:
|
404:
|
||||||
description: Knowledge base or document not found
|
description: Knowledge base or document not found
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
question = req["query"]
|
question = req["query"]
|
||||||
kb_id = req["knowledge_id"]
|
kb_id = req["knowledge_id"]
|
||||||
use_kg = req.get("use_kg", False)
|
use_kg = req.get("use_kg", False)
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ from api.db.services.tenant_llm_service import TenantLLMService
|
||||||
from api.db.services.task_service import TaskService, queue_tasks
|
from api.db.services.task_service import TaskService, queue_tasks
|
||||||
from api.db.services.dialog_service import meta_filter, convert_conditions
|
from api.db.services.dialog_service import meta_filter, convert_conditions
|
||||||
from api.utils.api_utils import check_duplicate_ids, construct_json_result, get_error_data_result, get_parser_config, get_result, server_error_response, token_required, \
|
from api.utils.api_utils import check_duplicate_ids, construct_json_result, get_error_data_result, get_parser_config, get_result, server_error_response, token_required, \
|
||||||
request_json
|
get_request_json
|
||||||
from rag.app.qa import beAdoc, rmPrefix
|
from rag.app.qa import beAdoc, rmPrefix
|
||||||
from rag.app.tag import label_question
|
from rag.app.tag import label_question
|
||||||
from rag.nlp import rag_tokenizer, search
|
from rag.nlp import rag_tokenizer, search
|
||||||
|
|
@ -231,7 +231,7 @@ async def update_doc(tenant_id, dataset_id, document_id):
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not KnowledgebaseService.query(id=dataset_id, tenant_id=tenant_id):
|
if not KnowledgebaseService.query(id=dataset_id, tenant_id=tenant_id):
|
||||||
return get_error_data_result(message="You don't own the dataset.")
|
return get_error_data_result(message="You don't own the dataset.")
|
||||||
e, kb = KnowledgebaseService.get_by_id(dataset_id)
|
e, kb = KnowledgebaseService.get_by_id(dataset_id)
|
||||||
|
|
@ -631,7 +631,7 @@ async def delete(tenant_id, dataset_id):
|
||||||
"""
|
"""
|
||||||
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
||||||
return get_error_data_result(message=f"You don't own the dataset {dataset_id}. ")
|
return get_error_data_result(message=f"You don't own the dataset {dataset_id}. ")
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req:
|
if not req:
|
||||||
doc_ids = None
|
doc_ids = None
|
||||||
else:
|
else:
|
||||||
|
|
@ -741,7 +741,7 @@ async def parse(tenant_id, dataset_id):
|
||||||
"""
|
"""
|
||||||
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
||||||
return get_error_data_result(message=f"You don't own the dataset {dataset_id}.")
|
return get_error_data_result(message=f"You don't own the dataset {dataset_id}.")
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req.get("document_ids"):
|
if not req.get("document_ids"):
|
||||||
return get_error_data_result("`document_ids` is required")
|
return get_error_data_result("`document_ids` is required")
|
||||||
doc_list = req.get("document_ids")
|
doc_list = req.get("document_ids")
|
||||||
|
|
@ -824,7 +824,7 @@ async def stop_parsing(tenant_id, dataset_id):
|
||||||
"""
|
"""
|
||||||
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
if not KnowledgebaseService.accessible(kb_id=dataset_id, user_id=tenant_id):
|
||||||
return get_error_data_result(message=f"You don't own the dataset {dataset_id}.")
|
return get_error_data_result(message=f"You don't own the dataset {dataset_id}.")
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
if not req.get("document_ids"):
|
if not req.get("document_ids"):
|
||||||
return get_error_data_result("`document_ids` is required")
|
return get_error_data_result("`document_ids` is required")
|
||||||
|
|
@ -1096,7 +1096,7 @@ async def add_chunk(tenant_id, dataset_id, document_id):
|
||||||
if not doc:
|
if not doc:
|
||||||
return get_error_data_result(message=f"You don't own the document {document_id}.")
|
return get_error_data_result(message=f"You don't own the document {document_id}.")
|
||||||
doc = doc[0]
|
doc = doc[0]
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not str(req.get("content", "")).strip():
|
if not str(req.get("content", "")).strip():
|
||||||
return get_error_data_result(message="`content` is required")
|
return get_error_data_result(message="`content` is required")
|
||||||
if "important_keywords" in req:
|
if "important_keywords" in req:
|
||||||
|
|
@ -1202,7 +1202,7 @@ async def rm_chunk(tenant_id, dataset_id, document_id):
|
||||||
docs = DocumentService.get_by_ids([document_id])
|
docs = DocumentService.get_by_ids([document_id])
|
||||||
if not docs:
|
if not docs:
|
||||||
raise LookupError(f"Can't find the document with ID {document_id}!")
|
raise LookupError(f"Can't find the document with ID {document_id}!")
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
condition = {"doc_id": document_id}
|
condition = {"doc_id": document_id}
|
||||||
if "chunk_ids" in req:
|
if "chunk_ids" in req:
|
||||||
unique_chunk_ids, duplicate_messages = check_duplicate_ids(req["chunk_ids"], "chunk")
|
unique_chunk_ids, duplicate_messages = check_duplicate_ids(req["chunk_ids"], "chunk")
|
||||||
|
|
@ -1288,7 +1288,7 @@ async def update_chunk(tenant_id, dataset_id, document_id, chunk_id):
|
||||||
if not doc:
|
if not doc:
|
||||||
return get_error_data_result(message=f"You don't own the document {document_id}.")
|
return get_error_data_result(message=f"You don't own the document {document_id}.")
|
||||||
doc = doc[0]
|
doc = doc[0]
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if "content" in req and req["content"] is not None:
|
if "content" in req and req["content"] is not None:
|
||||||
content = req["content"]
|
content = req["content"]
|
||||||
else:
|
else:
|
||||||
|
|
@ -1411,7 +1411,7 @@ async def retrieval_test(tenant_id):
|
||||||
format: float
|
format: float
|
||||||
description: Similarity score.
|
description: Similarity score.
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req.get("dataset_ids"):
|
if not req.get("dataset_ids"):
|
||||||
return get_error_data_result("`dataset_ids` is required.")
|
return get_error_data_result("`dataset_ids` is required.")
|
||||||
kb_ids = req["dataset_ids"]
|
kb_ids = req["dataset_ids"]
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ from pathlib import Path
|
||||||
from api.db.services.document_service import DocumentService
|
from api.db.services.document_service import DocumentService
|
||||||
from api.db.services.file2document_service import File2DocumentService
|
from api.db.services.file2document_service import File2DocumentService
|
||||||
from api.db.services.knowledgebase_service import KnowledgebaseService
|
from api.db.services.knowledgebase_service import KnowledgebaseService
|
||||||
from api.utils.api_utils import get_json_result, request_json, server_error_response, token_required
|
from api.utils.api_utils import get_json_result, get_request_json, server_error_response, token_required
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from api.db import FileType
|
from api.db import FileType
|
||||||
from api.db.services import duplicate_name
|
from api.db.services import duplicate_name
|
||||||
|
|
@ -192,7 +192,7 @@ async def create(tenant_id):
|
||||||
type:
|
type:
|
||||||
type: string
|
type: string
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
pf_id = req.get("parent_id")
|
pf_id = req.get("parent_id")
|
||||||
input_file_type = req.get("type")
|
input_file_type = req.get("type")
|
||||||
if not pf_id:
|
if not pf_id:
|
||||||
|
|
@ -480,7 +480,7 @@ async def rm(tenant_id):
|
||||||
type: boolean
|
type: boolean
|
||||||
example: true
|
example: true
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
file_ids = req["file_ids"]
|
file_ids = req["file_ids"]
|
||||||
try:
|
try:
|
||||||
for file_id in file_ids:
|
for file_id in file_ids:
|
||||||
|
|
@ -555,7 +555,7 @@ async def rename(tenant_id):
|
||||||
type: boolean
|
type: boolean
|
||||||
example: true
|
example: true
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
e, file = FileService.get_by_id(req["file_id"])
|
e, file = FileService.get_by_id(req["file_id"])
|
||||||
if not e:
|
if not e:
|
||||||
|
|
@ -666,7 +666,7 @@ async def move(tenant_id):
|
||||||
type: boolean
|
type: boolean
|
||||||
example: true
|
example: true
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
file_ids = req["src_file_ids"]
|
file_ids = req["src_file_ids"]
|
||||||
parent_id = req["dest_file_id"]
|
parent_id = req["dest_file_id"]
|
||||||
|
|
@ -693,7 +693,7 @@ async def move(tenant_id):
|
||||||
@manager.route('/file/convert', methods=['POST']) # noqa: F821
|
@manager.route('/file/convert', methods=['POST']) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def convert(tenant_id):
|
async def convert(tenant_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
kb_ids = req["kb_ids"]
|
kb_ids = req["kb_ids"]
|
||||||
file_ids = req["file_ids"]
|
file_ids = req["file_ids"]
|
||||||
file2documents = []
|
file2documents = []
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ from api.db.services.search_service import SearchService
|
||||||
from api.db.services.user_service import UserTenantService
|
from api.db.services.user_service import UserTenantService
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from api.utils.api_utils import check_duplicate_ids, get_data_openai, get_error_data_result, get_json_result, \
|
from api.utils.api_utils import check_duplicate_ids, get_data_openai, get_error_data_result, get_json_result, \
|
||||||
get_result, request_json, server_error_response, token_required, validate_request
|
get_result, get_request_json, server_error_response, token_required, validate_request
|
||||||
from rag.app.tag import label_question
|
from rag.app.tag import label_question
|
||||||
from rag.prompts.template import load_prompt
|
from rag.prompts.template import load_prompt
|
||||||
from rag.prompts.generator import cross_languages, gen_meta_filter, keyword_extraction, chunks_format
|
from rag.prompts.generator import cross_languages, gen_meta_filter, keyword_extraction, chunks_format
|
||||||
|
|
@ -45,7 +45,7 @@ from common import settings
|
||||||
@manager.route("/chats/<chat_id>/sessions", methods=["POST"]) # noqa: F821
|
@manager.route("/chats/<chat_id>/sessions", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def create(tenant_id, chat_id):
|
async def create(tenant_id, chat_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
req["dialog_id"] = chat_id
|
req["dialog_id"] = chat_id
|
||||||
dia = DialogService.query(tenant_id=tenant_id, id=req["dialog_id"], status=StatusEnum.VALID.value)
|
dia = DialogService.query(tenant_id=tenant_id, id=req["dialog_id"], status=StatusEnum.VALID.value)
|
||||||
if not dia:
|
if not dia:
|
||||||
|
|
@ -98,7 +98,7 @@ async def create_agent_session(tenant_id, agent_id):
|
||||||
@manager.route("/chats/<chat_id>/sessions/<session_id>", methods=["PUT"]) # noqa: F821
|
@manager.route("/chats/<chat_id>/sessions/<session_id>", methods=["PUT"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def update(tenant_id, chat_id, session_id):
|
async def update(tenant_id, chat_id, session_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
req["dialog_id"] = chat_id
|
req["dialog_id"] = chat_id
|
||||||
conv_id = session_id
|
conv_id = session_id
|
||||||
conv = ConversationService.query(id=conv_id, dialog_id=chat_id)
|
conv = ConversationService.query(id=conv_id, dialog_id=chat_id)
|
||||||
|
|
@ -120,7 +120,7 @@ async def update(tenant_id, chat_id, session_id):
|
||||||
@manager.route("/chats/<chat_id>/completions", methods=["POST"]) # noqa: F821
|
@manager.route("/chats/<chat_id>/completions", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def chat_completion(tenant_id, chat_id):
|
async def chat_completion(tenant_id, chat_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req:
|
if not req:
|
||||||
req = {"question": ""}
|
req = {"question": ""}
|
||||||
if not req.get("session_id"):
|
if not req.get("session_id"):
|
||||||
|
|
@ -206,7 +206,7 @@ async def chat_completion_openai_like(tenant_id, chat_id):
|
||||||
if reference:
|
if reference:
|
||||||
print(completion.choices[0].message.reference)
|
print(completion.choices[0].message.reference)
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
need_reference = bool(req.get("reference", False))
|
need_reference = bool(req.get("reference", False))
|
||||||
|
|
||||||
|
|
@ -384,7 +384,7 @@ async def chat_completion_openai_like(tenant_id, chat_id):
|
||||||
@validate_request("model", "messages") # noqa: F821
|
@validate_request("model", "messages") # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def agents_completion_openai_compatibility(tenant_id, agent_id):
|
async def agents_completion_openai_compatibility(tenant_id, agent_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
tiktokenenc = tiktoken.get_encoding("cl100k_base")
|
tiktokenenc = tiktoken.get_encoding("cl100k_base")
|
||||||
messages = req.get("messages", [])
|
messages = req.get("messages", [])
|
||||||
if not messages:
|
if not messages:
|
||||||
|
|
@ -442,7 +442,7 @@ async def agents_completion_openai_compatibility(tenant_id, agent_id):
|
||||||
@manager.route("/agents/<agent_id>/completions", methods=["POST"]) # noqa: F821
|
@manager.route("/agents/<agent_id>/completions", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def agent_completions(tenant_id, agent_id):
|
async def agent_completions(tenant_id, agent_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
if req.get("stream", True):
|
if req.get("stream", True):
|
||||||
|
|
||||||
|
|
@ -614,7 +614,7 @@ async def delete(tenant_id, chat_id):
|
||||||
|
|
||||||
errors = []
|
errors = []
|
||||||
success_count = 0
|
success_count = 0
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
convs = ConversationService.query(dialog_id=chat_id)
|
convs = ConversationService.query(dialog_id=chat_id)
|
||||||
if not req:
|
if not req:
|
||||||
ids = None
|
ids = None
|
||||||
|
|
@ -662,7 +662,7 @@ async def delete(tenant_id, chat_id):
|
||||||
async def delete_agent_session(tenant_id, agent_id):
|
async def delete_agent_session(tenant_id, agent_id):
|
||||||
errors = []
|
errors = []
|
||||||
success_count = 0
|
success_count = 0
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
cvs = UserCanvasService.query(user_id=tenant_id, id=agent_id)
|
cvs = UserCanvasService.query(user_id=tenant_id, id=agent_id)
|
||||||
if not cvs:
|
if not cvs:
|
||||||
return get_error_data_result(f"You don't own the agent {agent_id}")
|
return get_error_data_result(f"You don't own the agent {agent_id}")
|
||||||
|
|
@ -715,7 +715,7 @@ async def delete_agent_session(tenant_id, agent_id):
|
||||||
@manager.route("/sessions/ask", methods=["POST"]) # noqa: F821
|
@manager.route("/sessions/ask", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def ask_about(tenant_id):
|
async def ask_about(tenant_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req.get("question"):
|
if not req.get("question"):
|
||||||
return get_error_data_result("`question` is required.")
|
return get_error_data_result("`question` is required.")
|
||||||
if not req.get("dataset_ids"):
|
if not req.get("dataset_ids"):
|
||||||
|
|
@ -754,7 +754,7 @@ async def ask_about(tenant_id):
|
||||||
@manager.route("/sessions/related_questions", methods=["POST"]) # noqa: F821
|
@manager.route("/sessions/related_questions", methods=["POST"]) # noqa: F821
|
||||||
@token_required
|
@token_required
|
||||||
async def related_questions(tenant_id):
|
async def related_questions(tenant_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not req.get("question"):
|
if not req.get("question"):
|
||||||
return get_error_data_result("`question` is required.")
|
return get_error_data_result("`question` is required.")
|
||||||
question = req["question"]
|
question = req["question"]
|
||||||
|
|
@ -805,7 +805,7 @@ Related search terms:
|
||||||
|
|
||||||
@manager.route("/chatbots/<dialog_id>/completions", methods=["POST"]) # noqa: F821
|
@manager.route("/chatbots/<dialog_id>/completions", methods=["POST"]) # noqa: F821
|
||||||
async def chatbot_completions(dialog_id):
|
async def chatbot_completions(dialog_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
token = request.headers.get("Authorization").split()
|
token = request.headers.get("Authorization").split()
|
||||||
if len(token) != 2:
|
if len(token) != 2:
|
||||||
|
|
@ -855,7 +855,7 @@ async def chatbots_inputs(dialog_id):
|
||||||
|
|
||||||
@manager.route("/agentbots/<agent_id>/completions", methods=["POST"]) # noqa: F821
|
@manager.route("/agentbots/<agent_id>/completions", methods=["POST"]) # noqa: F821
|
||||||
async def agent_bot_completions(agent_id):
|
async def agent_bot_completions(agent_id):
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
token = request.headers.get("Authorization").split()
|
token = request.headers.get("Authorization").split()
|
||||||
if len(token) != 2:
|
if len(token) != 2:
|
||||||
|
|
@ -908,7 +908,7 @@ async def ask_about_embedded():
|
||||||
if not objs:
|
if not objs:
|
||||||
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
uid = objs[0].tenant_id
|
uid = objs[0].tenant_id
|
||||||
|
|
||||||
search_id = req.get("search_id", "")
|
search_id = req.get("search_id", "")
|
||||||
|
|
@ -947,7 +947,7 @@ async def retrieval_test_embedded():
|
||||||
if not objs:
|
if not objs:
|
||||||
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
page = int(req.get("page", 1))
|
page = int(req.get("page", 1))
|
||||||
size = int(req.get("size", 30))
|
size = int(req.get("size", 30))
|
||||||
question = req["question"]
|
question = req["question"]
|
||||||
|
|
@ -1046,7 +1046,7 @@ async def related_questions_embedded():
|
||||||
if not objs:
|
if not objs:
|
||||||
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
tenant_id = objs[0].tenant_id
|
tenant_id = objs[0].tenant_id
|
||||||
if not tenant_id:
|
if not tenant_id:
|
||||||
return get_error_data_result(message="permission denined.")
|
return get_error_data_result(message="permission denined.")
|
||||||
|
|
@ -1123,7 +1123,7 @@ async def mindmap():
|
||||||
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
return get_error_data_result(message='Authentication error: API key is invalid!"')
|
||||||
|
|
||||||
tenant_id = objs[0].tenant_id
|
tenant_id = objs[0].tenant_id
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
|
|
||||||
search_id = req.get("search_id", "")
|
search_id = req.get("search_id", "")
|
||||||
search_app = SearchService.get_detail(search_id) if search_id else {}
|
search_app = SearchService.get_detail(search_id) if search_id else {}
|
||||||
|
|
|
||||||
|
|
@ -24,14 +24,14 @@ from api.db.services.search_service import SearchService
|
||||||
from api.db.services.user_service import TenantService, UserTenantService
|
from api.db.services.user_service import TenantService, UserTenantService
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from common.constants import RetCode, StatusEnum
|
from common.constants import RetCode, StatusEnum
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, not_allowed_parameters, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, not_allowed_parameters, get_request_json, server_error_response, validate_request
|
||||||
|
|
||||||
|
|
||||||
@manager.route("/create", methods=["post"]) # noqa: F821
|
@manager.route("/create", methods=["post"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("name")
|
@validate_request("name")
|
||||||
async def create():
|
async def create():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
search_name = req["name"]
|
search_name = req["name"]
|
||||||
description = req.get("description", "")
|
description = req.get("description", "")
|
||||||
if not isinstance(search_name, str):
|
if not isinstance(search_name, str):
|
||||||
|
|
@ -66,7 +66,7 @@ async def create():
|
||||||
@validate_request("search_id", "name", "search_config", "tenant_id")
|
@validate_request("search_id", "name", "search_config", "tenant_id")
|
||||||
@not_allowed_parameters("id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by")
|
@not_allowed_parameters("id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by")
|
||||||
async def update():
|
async def update():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
if not isinstance(req["name"], str):
|
if not isinstance(req["name"], str):
|
||||||
return get_data_error_result(message="Search name must be string.")
|
return get_data_error_result(message="Search name must be string.")
|
||||||
if req["name"].strip() == "":
|
if req["name"].strip() == "":
|
||||||
|
|
@ -150,7 +150,7 @@ async def list_search_app():
|
||||||
else:
|
else:
|
||||||
desc = True
|
desc = True
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
owner_ids = req.get("owner_ids", [])
|
owner_ids = req.get("owner_ids", [])
|
||||||
try:
|
try:
|
||||||
if not owner_ids:
|
if not owner_ids:
|
||||||
|
|
@ -174,7 +174,7 @@ async def list_search_app():
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("search_id")
|
@validate_request("search_id")
|
||||||
async def rm():
|
async def rm():
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
search_id = req["search_id"]
|
search_id = req["search_id"]
|
||||||
if not SearchService.accessible4deletion(search_id, current_user.id):
|
if not SearchService.accessible4deletion(search_id, current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
return get_json_result(data=False, message="No authorization.", code=RetCode.AUTHENTICATION_ERROR)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ from api.db.services.user_service import UserTenantService, UserService
|
||||||
from common.constants import RetCode, StatusEnum
|
from common.constants import RetCode, StatusEnum
|
||||||
from common.misc_utils import get_uuid
|
from common.misc_utils import get_uuid
|
||||||
from common.time_utils import delta_seconds
|
from common.time_utils import delta_seconds
|
||||||
from api.utils.api_utils import get_data_error_result, get_json_result, request_json, server_error_response, validate_request
|
from api.utils.api_utils import get_data_error_result, get_json_result, get_request_json, server_error_response, validate_request
|
||||||
from api.utils.web_utils import send_invite_email
|
from api.utils.web_utils import send_invite_email
|
||||||
from common import settings
|
from common import settings
|
||||||
from api.apps import smtp_mail_server, login_required, current_user
|
from api.apps import smtp_mail_server, login_required, current_user
|
||||||
|
|
@ -55,7 +55,7 @@ async def create(tenant_id):
|
||||||
message='No authorization.',
|
message='No authorization.',
|
||||||
code=RetCode.AUTHENTICATION_ERROR)
|
code=RetCode.AUTHENTICATION_ERROR)
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
invite_user_email = req["email"]
|
invite_user_email = req["email"]
|
||||||
invite_users = UserService.query(email=invite_user_email)
|
invite_users = UserService.query(email=invite_user_email)
|
||||||
if not invite_users:
|
if not invite_users:
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ from common.connection_utils import construct_response
|
||||||
from api.utils.api_utils import (
|
from api.utils.api_utils import (
|
||||||
get_data_error_result,
|
get_data_error_result,
|
||||||
get_json_result,
|
get_json_result,
|
||||||
request_json,
|
get_request_json,
|
||||||
server_error_response,
|
server_error_response,
|
||||||
validate_request,
|
validate_request,
|
||||||
)
|
)
|
||||||
|
|
@ -92,7 +92,7 @@ async def login():
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
"""
|
"""
|
||||||
json_body = await request_json()
|
json_body = await get_request_json()
|
||||||
if not json_body:
|
if not json_body:
|
||||||
return get_json_result(data=False, code=RetCode.AUTHENTICATION_ERROR, message="Unauthorized!")
|
return get_json_result(data=False, code=RetCode.AUTHENTICATION_ERROR, message="Unauthorized!")
|
||||||
|
|
||||||
|
|
@ -536,7 +536,7 @@ async def setting_user():
|
||||||
type: object
|
type: object
|
||||||
"""
|
"""
|
||||||
update_dict = {}
|
update_dict = {}
|
||||||
request_data = await request_json()
|
request_data = await get_request_json()
|
||||||
if request_data.get("password"):
|
if request_data.get("password"):
|
||||||
new_password = request_data.get("new_password")
|
new_password = request_data.get("new_password")
|
||||||
if not check_password_hash(current_user.password, decrypt(request_data["password"])):
|
if not check_password_hash(current_user.password, decrypt(request_data["password"])):
|
||||||
|
|
@ -703,7 +703,7 @@ async def user_add():
|
||||||
code=RetCode.OPERATING_ERROR,
|
code=RetCode.OPERATING_ERROR,
|
||||||
)
|
)
|
||||||
|
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
email_address = req["email"]
|
email_address = req["email"]
|
||||||
|
|
||||||
# Validate the email address
|
# Validate the email address
|
||||||
|
|
@ -836,7 +836,7 @@ async def set_tenant_info():
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
try:
|
try:
|
||||||
tid = req.pop("tenant_id")
|
tid = req.pop("tenant_id")
|
||||||
TenantService.update_by_id(tid, req)
|
TenantService.update_by_id(tid, req)
|
||||||
|
|
@ -880,7 +880,7 @@ async def forget_send_otp():
|
||||||
- Verify the image captcha stored at captcha:{email} (case-insensitive).
|
- Verify the image captcha stored at captcha:{email} (case-insensitive).
|
||||||
- On success, generate an email OTP (A–Z with length = OTP_LENGTH), store hash + salt (and timestamp) in Redis with TTL, reset attempts and cooldown, and send the OTP via email.
|
- On success, generate an email OTP (A–Z with length = OTP_LENGTH), store hash + salt (and timestamp) in Redis with TTL, reset attempts and cooldown, and send the OTP via email.
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
email = req.get("email") or ""
|
email = req.get("email") or ""
|
||||||
captcha = (req.get("captcha") or "").strip()
|
captcha = (req.get("captcha") or "").strip()
|
||||||
|
|
||||||
|
|
@ -946,7 +946,7 @@ async def forget():
|
||||||
POST: Verify email + OTP and reset password, then log the user in.
|
POST: Verify email + OTP and reset password, then log the user in.
|
||||||
Request JSON: { email, otp, new_password, confirm_new_password }
|
Request JSON: { email, otp, new_password, confirm_new_password }
|
||||||
"""
|
"""
|
||||||
req = await request_json()
|
req = await get_request_json()
|
||||||
email = req.get("email") or ""
|
email = req.get("email") or ""
|
||||||
otp = (req.get("otp") or "").strip()
|
otp = (req.get("otp") or "").strip()
|
||||||
new_pwd = req.get("new_password")
|
new_pwd = req.get("new_password")
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ async def _coerce_request_data() -> dict:
|
||||||
return payload or {}
|
return payload or {}
|
||||||
|
|
||||||
|
|
||||||
async def request_json():
|
async def get_request_json():
|
||||||
return await _coerce_request_data()
|
return await _coerce_request_data()
|
||||||
|
|
||||||
def serialize_for_json(obj):
|
def serialize_for_json(obj):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue