From 4d997bc740cb0937ae1c3d25b3b7ca9c4da4c67c Mon Sep 17 00:00:00 2001 From: buua436 Date: Tue, 4 Aug 2026 17:24:23 +0800 Subject: [PATCH] fix: allow team members to update shared datasets (#17798) --- api/apps/services/dataset_api_service.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/api/apps/services/dataset_api_service.py b/api/apps/services/dataset_api_service.py index e143c2a979..112ce20db4 100644 --- a/api/apps/services/dataset_api_service.py +++ b/api/apps/services/dataset_api_service.py @@ -288,10 +288,14 @@ async def update_dataset(tenant_id: str, dataset_id: str, req: dict): if not req: return False, "no properties were modified" - kb = KnowledgebaseService.get_or_none(id=dataset_id, tenant_id=tenant_id) - if kb is None: + kbs = KnowledgebaseService.get_kb_by_id(dataset_id, tenant_id) + if not kbs: return False, f"User '{tenant_id}' lacks permission for dataset '{dataset_id}'" + kb = KnowledgebaseService.get_or_none(id=dataset_id) + if kb is None: + return False, "Invalid Dataset ID" + # Extract ext field for additional parameters ext_fields = req.pop("ext", {}) @@ -350,7 +354,7 @@ async def update_dataset(tenant_id: str, dataset_id: str, req: dict): req["pipeline_id"] = "" if "name" in req and req["name"].lower() != kb.name.lower(): - exists = KnowledgebaseService.get_or_none(name=req["name"], tenant_id=tenant_id, status=StatusEnum.VALID.value) + exists = KnowledgebaseService.get_or_none(name=req["name"], tenant_id=kb.tenant_id, status=StatusEnum.VALID.value) if exists: return False, f"Dataset name '{req['name']}' already exists"