Skip to content

Commit a34c089

Browse files
committed
refactor: enhance knowledge retrieval logic for workspace management and x-pack EE
1 parent e8418f6 commit a34c089

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

apps/knowledge/serializers/knowledge.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,17 @@ def list_application(self, with_valid=True):
292292
]
293293
)
294294

295+
@staticmethod
296+
def is_x_pack_ee():
297+
workspace_user_role_mapping_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
298+
role_permission_mapping_model = DatabaseModelManage.get_model("role_permission_mapping_model")
299+
return workspace_user_role_mapping_model is not None and role_permission_mapping_model is not None
300+
295301
def one(self):
296302
self.is_valid()
303+
workspace_manage = is_workspace_manage(self.data.get('user_id'), self.data.get('workspace_id'))
304+
is_x_pack_ee = self.is_x_pack_ee()
305+
297306
query_set_dict = {
298307
'default_sql': QuerySet(
299308
model=get_dynamics_model({'temp.id': models.CharField()})
@@ -303,11 +312,22 @@ def one(self):
303312
).filter(**{'knowledge.user_id': self.data.get("user_id")}),
304313
'folder_query_set': QuerySet(KnowledgeFolder)
305314
}
315+
if not workspace_manage:
316+
query_set_dict['workspace_user_resource_permission_query_set'] = QuerySet(
317+
WorkspaceUserResourcePermission).filter(
318+
auth_target_type="KNOWLEDGE",
319+
workspace_id=self.data.get('workspace_id'),
320+
user_id=self.data.get("user_id")
321+
)
306322
all_application_list = [str(adm.get('id')) for adm in self.list_application(with_valid=False)]
307323
knowledge_dict = native_search(query_set_dict, select_string=get_file_content(
308-
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')), with_search_one=True)
309-
if knowledge_dict is None:
310-
return None
324+
os.path.join(
325+
PROJECT_DIR, "apps", "knowledge", 'sql',
326+
'list_knowledge.sql' if workspace_manage else (
327+
'list_knowledge_user_ee.sql' if is_x_pack_ee else 'list_knowledge_user.sql'
328+
)
329+
)
330+
), with_search_one=True)
311331
return {
312332
**knowledge_dict,
313333
'meta': json.loads(knowledge_dict.get('meta', '{}')),

0 commit comments

Comments
 (0)