Skip to content

Commit 043d1ac

Browse files
authored
fix: The data in the resource list is incorrect (#6157)
1 parent e3f3ed7 commit 043d1ac

5 files changed

Lines changed: 53 additions & 35 deletions

File tree

apps/application/serializers/application.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
from tools.serializers.tool import ToolExportModelSerializer
6262
from trigger.models import TriggerTask, Trigger
6363
from users.models import User
64-
from users.serializers.user import is_workspace_manage
64+
from users.serializers.user import is_workspace_manage, is_workspace_manage_permission_read
6565

6666

6767
def get_base_node_work_flow(work_flow):
@@ -417,7 +417,7 @@ def list(self, instance: Dict):
417417
user_id = self.data.get("user_id")
418418
req_dict = ApplicationQueryRequest(data=instance)
419419
req_dict.is_valid(raise_exception=True)
420-
workspace_manage = is_workspace_manage(user_id, workspace_id)
420+
workspace_manage = is_workspace_manage_permission_read(user_id, workspace_id, "APPLICATION:READ")
421421
is_x_pack_ee = self.is_x_pack_ee()
422422
return native_search(self.get_query_set(req_dict.data, workspace_manage, is_x_pack_ee),
423423
select_string=get_file_content(
@@ -432,7 +432,7 @@ def page(self, current_page: int, page_size: int, instance: Dict):
432432
req_dict.is_valid(raise_exception=True)
433433
workspace_id = self.data.get('workspace_id')
434434
user_id = self.data.get("user_id")
435-
workspace_manage = is_workspace_manage(user_id, workspace_id)
435+
workspace_manage = is_workspace_manage_permission_read(user_id, workspace_id, "APPLICATION:READ")
436436
is_x_pack_ee = self.is_x_pack_ee()
437437
result = native_page_search(current_page, page_size,
438438
self.get_query_set(req_dict.data, workspace_manage, is_x_pack_ee),
@@ -972,7 +972,7 @@ def publish(self, instance, with_valid=True):
972972
work_flow_version.save()
973973
access_token = hashlib.md5(
974974
str(uuid.uuid7()).encode()).hexdigest()[
975-
8:24]
975+
8:24]
976976
application_access_token = QuerySet(ApplicationAccessToken).filter(
977977
application_id=application.id).first()
978978
if application_access_token is None:
@@ -1276,7 +1276,8 @@ def update_knowledge_node(self, workflow, available_knowledge_dict):
12761276
knowledge_list = [available_knowledge_dict.get(knowledge_id) for knowledge_id in knowledge_id_list if
12771277
available_knowledge_dict.__contains__(knowledge_id)]
12781278
node_data['all_knowledge_id_list'] = knowledge_id_list
1279-
node_data['no_permission_knowledge_id_list'] = [knowledge_id for knowledge_id in knowledge_id_list if not available_knowledge_dict.__contains__(knowledge_id) ]
1279+
node_data['no_permission_knowledge_id_list'] = [knowledge_id for knowledge_id in knowledge_id_list if
1280+
not available_knowledge_dict.__contains__(knowledge_id)]
12801281
node_data['knowledge_id_list'] = [knowledge.get('id') for knowledge in knowledge_list]
12811282
node_data['knowledge_list'] = knowledge_list
12821283

apps/knowledge/serializers/knowledge.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
from system_manage.models.resource_mapping import ResourceMapping
4545
from system_manage.serializers.resource_mapping_serializers import ResourceMappingSerializer
4646
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
47-
from users.serializers.user import is_workspace_manage
47+
from users.serializers.user import is_workspace_manage, is_workspace_manage_permission_read
4848

4949
from knowledge.models import (
5050
Document,
@@ -226,9 +226,9 @@ def get_query_set(self, workspace_manage, is_x_pack_ee):
226226
query_set = query_set.filter(**{"temp.workspace_id": self.data.get("workspace_id")})
227227
folder_query_set = folder_query_set.filter(**{"workspace_id": self.data.get("workspace_id")})
228228
if (
229-
"folder_id" in self.data
230-
and self.data.get("folder_id") is not None
231-
and self.data.get("workspace_id") != self.data.get("folder_id")
229+
"folder_id" in self.data
230+
and self.data.get("folder_id") is not None
231+
and self.data.get("workspace_id") != self.data.get("folder_id")
232232
):
233233
query_set = query_set.filter(**{"temp.folder_id": self.data.get("folder_id")})
234234
folder_query_set = folder_query_set.filter(**{"parent_id": self.data.get("folder_id")})
@@ -259,7 +259,8 @@ def page(self, current_page: int, page_size: int):
259259
root = KnowledgeFolder.objects.filter(id=folder_id).first()
260260
if not root:
261261
raise serializers.ValidationError(_("Folder not found"))
262-
workspace_manage = is_workspace_manage(self.data.get("user_id"), self.data.get("workspace_id"))
262+
workspace_manage = is_workspace_manage_permission_read(self.data.get("user_id"),
263+
self.data.get("workspace_id"), "KNOWLEDGE:READ")
263264
is_x_pack_ee = self.is_x_pack_ee()
264265
result = native_page_search(
265266
current_page,
@@ -288,7 +289,9 @@ def list(self):
288289
root = KnowledgeFolder.objects.filter(id=folder_id).first()
289290
if not root:
290291
raise serializers.ValidationError(_("Folder not found"))
291-
workspace_manage = is_workspace_manage(self.data.get("user_id"), self.data.get("workspace_id"))
292+
workspace_manage = is_workspace_manage_permission_read(self.data.get("user_id"),
293+
self.data.get("workspace_id"), "KNOWLEDGE:READ")
294+
292295
is_x_pack_ee = self.is_x_pack_ee()
293296
return native_search(
294297
self.get_query_set(workspace_manage, is_x_pack_ee),
@@ -449,10 +452,10 @@ def one(self):
449452
[
450453
str(application_knowledge_mapping.source_id)
451454
for application_knowledge_mapping in QuerySet(ResourceMapping).filter(
452-
source_type="APPLICATION",
453-
target_type="KNOWLEDGE",
454-
target_id=self.data.get("knowledge_id"),
455-
)
455+
source_type="APPLICATION",
456+
target_type="KNOWLEDGE",
457+
target_id=self.data.get("knowledge_id"),
458+
)
456459
],
457460
)
458461
),
@@ -687,7 +690,7 @@ def export_knowledge(self, with_valid=True):
687690

688691
@staticmethod
689692
def _get_knowledge_workbook(
690-
data_dict: dict, document_dict: dict, doc_tag_map: dict, doc_obj_map: dict, paragraph_active_map: dict
693+
data_dict: dict, document_dict: dict, doc_tag_map: dict, doc_obj_map: dict, paragraph_active_map: dict
691694
):
692695
import openpyxl
693696
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE

apps/models_provider/serializers/model_serializer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from system_manage.models.resource_mapping import ResourceMapping
3030
from system_manage.serializers.resource_mapping_serializers import ResourceMappingSerializer
3131
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
32-
from users.serializers.user import is_workspace_manage
32+
from users.serializers.user import is_workspace_manage_permission_read
3333

3434

3535
def get_default_model_params_setting(provider, model_type, model_name):
@@ -366,7 +366,7 @@ def list(self, workspace_id, with_valid):
366366
if with_valid:
367367
self.is_valid(raise_exception=True)
368368
user_id = self.data.get("user_id")
369-
workspace_manage = is_workspace_manage(user_id, workspace_id)
369+
workspace_manage = is_workspace_manage_permission_read(user_id, workspace_id, 'MODEL:READ')
370370
query_params = self._build_query_params(workspace_id, workspace_manage, user_id)
371371
is_x_pack_ee = self.is_x_pack_ee()
372372
result = native_search(query_params,
@@ -393,7 +393,7 @@ def model_list(self, workspace_id, with_valid=True):
393393
if with_valid:
394394
self.is_valid(raise_exception=True)
395395
user_id = self.data.get("user_id")
396-
workspace_manage = is_workspace_manage(user_id, workspace_id)
396+
workspace_manage = is_workspace_manage_permission_read(user_id, workspace_id, 'MODEL:READ')
397397
queryset = self._build_query_params(workspace_id, workspace_manage, user_id)
398398
get_authorized_model = DatabaseModelManage.get_model("get_authorized_model")
399399

apps/tools/serializers/tool.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
from system_manage.serializers.resource_mapping_serializers import ResourceMappingSerializer
4545
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
4646
from trigger.models import Trigger, TriggerTask
47-
from users.serializers.user import is_workspace_manage
47+
from users.serializers.user import is_workspace_manage, is_workspace_manage_permission_read
4848

4949
from tools.models import Tool, ToolFolder, ToolRecord, ToolScope, ToolType
5050
from tools.models.tool_workflow import ToolWorkflow
@@ -869,9 +869,9 @@ def run(self, instance, is_valid=True):
869869
{
870870
"type": "error"
871871
if (
872-
item.get("code") == "E999"
873-
or str(item.get("code") or "").startswith("E9")
874-
or item.get("code") in ["F821", "F822", "F823"]
872+
item.get("code") == "E999"
873+
or str(item.get("code") or "").startswith("E9")
874+
or item.get("code") in ["F821", "F822", "F823"]
875875
)
876876
else "warning",
877877
"module": "",
@@ -997,7 +997,7 @@ def import_workflow_tools(self, tool, workspace_id, user_id, folder_id, new_chil
997997
{**tool, "id": update_tool_map.get(tool.get("id"))}
998998
for tool in tool_list
999999
if not exits_tool_id_list.__contains__(tool.get("id"))
1000-
and not exits_tool_id_list.__contains__(
1000+
and not exits_tool_id_list.__contains__(
10011001
new_uuid.generate_uuid(tool.get("id"))
10021002
if new_child_policy == 2
10031003
else generate_uuid((tool.get("id") + workspace_id or ""))
@@ -1600,15 +1600,15 @@ def process():
16001600
)
16011601
try:
16021602
for r in model.stream(
1603-
[
1604-
# SystemMessage(content=SYSTEM_ROLE),
1605-
*[
1606-
HumanMessage(content=m.get("content"))
1607-
if m.get("role") == "user"
1608-
else AIMessage(content=m.get("content"))
1609-
for m in messages
1603+
[
1604+
# SystemMessage(content=SYSTEM_ROLE),
1605+
*[
1606+
HumanMessage(content=m.get("content"))
1607+
if m.get("role") == "user"
1608+
else AIMessage(content=m.get("content"))
1609+
for m in messages
1610+
]
16101611
]
1611-
]
16121612
):
16131613
yield "data: " + json.dumps({"content": r.content}) + "\n\n"
16141614
except Exception as e:
@@ -1772,7 +1772,8 @@ def is_x_pack_ee():
17721772
def page_tool_with_folders(self, current_page: int, page_size: int):
17731773
self.is_valid(raise_exception=True)
17741774

1775-
workspace_manage = is_workspace_manage(self.data.get("user_id"), self.data.get("workspace_id"))
1775+
workspace_manage = is_workspace_manage_permission_read(self.data.get("user_id"),
1776+
self.data.get("workspace_id"), 'TOOL:READ')
17761777
is_x_pack_ee = self.is_x_pack_ee()
17771778
result = native_page_search(
17781779
current_page,
@@ -1800,7 +1801,8 @@ def page_tool_with_folders(self, current_page: int, page_size: int):
18001801
def get_tools(self):
18011802
self.is_valid(raise_exception=True)
18021803

1803-
workspace_manage = is_workspace_manage(self.data.get("user_id"), self.data.get("workspace_id"))
1804+
workspace_manage = is_workspace_manage_permission_read(self.data.get("user_id"),
1805+
self.data.get("workspace_id"), 'TOOL:READ')
18041806
is_x_pack_ee = self.is_x_pack_ee()
18051807
results = native_search(
18061808
self.get_query_set(workspace_manage, is_x_pack_ee),

apps/users/serializers/user.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,19 @@ def is_workspace_manage(user_id: str, workspace_id: str):
8181
role__type=RoleConstants.WORKSPACE_MANAGE.value.__str__()).exists()
8282
return QuerySet(User).filter(id=user_id, role=RoleConstants.ADMIN.value.__str__()).exists()
8383

84-
84+
def is_workspace_manage_permission_read(user_id: str, workspace_id: str, permission_id):
85+
workspace_user_role_mapping_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
86+
role_permission_mapping_model = DatabaseModelManage.get_model("role_permission_mapping_model")
87+
is_x_pack_ee = workspace_user_role_mapping_model is not None and role_permission_mapping_model is not None
88+
if is_x_pack_ee:
89+
has_permission = QuerySet(role_permission_mapping_model).filter(
90+
role__userrolerelation__user_id=user_id,
91+
role__userrolerelation__workspace_id=workspace_id,
92+
permission_id=permission_id,
93+
role__type=RoleConstants.WORKSPACE_MANAGE.value.__str__()
94+
).exists()
95+
return has_permission
96+
return True
8597
def get_workspace_list_by_user(user_id):
8698
get_workspace_list = DatabaseModelManage.get_model('get_workspace_list_by_user')
8799
license_is_valid = DatabaseModelManage.get_model('license_is_valid') or (lambda: False)

0 commit comments

Comments
 (0)