diff --git a/api/apps/kb_app.py b/api/apps/kb_app.py index 794190de6..ab1664254 100644 --- a/api/apps/kb_app.py +++ b/api/apps/kb_app.py @@ -157,25 +157,38 @@ def detail(): return server_error_response(e) -@manager.route('/list', methods=['GET']) # noqa: F821 +@manager.route('/list', methods=['POST']) # noqa: F821 @login_required def list_kbs(): keywords = request.args.get("keywords", "") - page_number = int(request.args.get("page", 1)) - items_per_page = int(request.args.get("page_size", 150)) + page_number = int(request.args.get("page", 0)) + items_per_page = int(request.args.get("page_size", 0)) parser_id = request.args.get("parser_id") orderby = request.args.get("orderby", "create_time") desc = request.args.get("desc", True) + + req = request.get_json() + owner_ids = req.get("owner_ids", []) try: - tenants = TenantService.get_joined_tenants_by_user_id(current_user.id) - kbs, total = KnowledgebaseService.get_by_tenant_ids( - [m["tenant_id"] for m in tenants], current_user.id, page_number, - items_per_page, orderby, desc, keywords, parser_id) + if not owner_ids: + tenants = TenantService.get_joined_tenants_by_user_id(current_user.id) + tenants = [m["tenant_id"] for m in tenants] + kbs, total = KnowledgebaseService.get_by_tenant_ids( + tenants, current_user.id, page_number, + items_per_page, orderby, desc, keywords, parser_id) + else: + tenants = owner_ids + kbs, total = KnowledgebaseService.get_by_tenant_ids( + tenants, current_user.id, 0, + 0, orderby, desc, keywords, parser_id) + kbs = [kb for kb in kbs if kb["tenant_id"] in tenants] + if page_number and items_per_page: + kbs = kbs[(page_number-1)*items_per_page:page_number*items_per_page] + total = len(kbs) return get_json_result(data={"kbs": kbs, "total": total}) except Exception as e: return server_error_response(e) - @manager.route('/rm', methods=['post']) # noqa: F821 @login_required @validate_request("kb_id") diff --git a/api/db/services/knowledgebase_service.py b/api/db/services/knowledgebase_service.py index 278632f87..9f5875884 100644 --- a/api/db/services/knowledgebase_service.py +++ b/api/db/services/knowledgebase_service.py @@ -150,6 +150,7 @@ class KnowledgebaseService(CommonService): cls.model.name, cls.model.language, cls.model.description, + cls.model.tenant_id, cls.model.permission, cls.model.doc_num, cls.model.token_num, @@ -184,7 +185,8 @@ class KnowledgebaseService(CommonService): count = kbs.count() - kbs = kbs.paginate(page_number, items_per_page) + if page_number and items_per_page: + kbs = kbs.paginate(page_number, items_per_page) return list(kbs.dicts()), count diff --git a/sdk/python/test/test_frontend_api/common.py b/sdk/python/test/test_frontend_api/common.py index f94e1e6f5..a245093f4 100644 --- a/sdk/python/test/test_frontend_api/common.py +++ b/sdk/python/test/test_frontend_api/common.py @@ -15,9 +15,10 @@ # import os + import requests -HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380') +HOST_ADDRESS = os.getenv("HOST_ADDRESS", "http://127.0.0.1:9380") DATASET_NAME_LIMIT = 128 @@ -30,10 +31,11 @@ def create_dataset(auth, dataset_name): return res.json() -def list_dataset(auth, page_number): +def list_dataset(auth, page_number, page_size=30): authorization = {"Authorization": auth} - url = f"{HOST_ADDRESS}/v1/kb/list?page={page_number}" - res = requests.get(url=url, headers=authorization) + url = f"{HOST_ADDRESS}/v1/kb/list?page={page_number}&page_size={page_size}" + json = {} + res = requests.post(url=url, headers=authorization, json=json) return res.json() @@ -59,37 +61,35 @@ def upload_file(auth, dataset_id, path): "kb_id": dataset_id, } - file = { - 'file': open(f'{path}', 'rb') - } + file = {"file": open(f"{path}", "rb")} res = requests.post(url=url, headers=authorization, files=file, data=json_req) return res.json() + def list_document(auth, dataset_id): authorization = {"Authorization": auth} - url = f"{HOST_ADDRESS}/v1/document/list?kb_id={dataset_id}" + url = f"{HOST_ADDRESS}/v1/document/list?kb_id={dataset_id}" res = requests.get(url=url, headers=authorization) return res.json() + def get_docs_info(auth, doc_ids): authorization = {"Authorization": auth} - json_req = { - "doc_ids": doc_ids - } + json_req = {"doc_ids": doc_ids} url = f"{HOST_ADDRESS}/v1/document/infos" res = requests.post(url=url, headers=authorization, json=json_req) return res.json() + def parse_docs(auth, doc_ids): authorization = {"Authorization": auth} - json_req = { - "doc_ids": doc_ids, - "run": 1 - } + json_req = {"doc_ids": doc_ids, "run": 1} url = f"{HOST_ADDRESS}/v1/document/run" res = requests.post(url=url, headers=authorization, json=json_req) return res.json() + def parse_file(auth, document_id): - pass \ No newline at end of file + pass +