Skip to content

Commit f6ccc95

Browse files
committed
feat: implement source type retrieval and enhance folder deletion logic
1 parent 1f8907e commit f6ccc95

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

apps/folders/serializers/folder.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,24 @@
88

99
from common.constants.permission_constants import Group
1010
from folders.api.folder import FolderCreateRequest
11-
from knowledge.models import KnowledgeFolder
11+
from knowledge.models import KnowledgeFolder, Knowledge
1212
from knowledge.serializers.knowledge_folder import KnowledgeFolderTreeSerializer
13-
from tools.models import ToolFolder
13+
from tools.models import ToolFolder, Tool
1414
from tools.serializers.tool_folder import ToolFolderTreeSerializer
1515

1616

17+
def get_source_type(source):
18+
if source == Group.TOOL.name:
19+
return Tool
20+
elif source == Group.APPLICATION.name:
21+
# todo app folder
22+
return None
23+
elif source == Group.KNOWLEDGE.name:
24+
return Knowledge
25+
else:
26+
return None
27+
28+
1729
def get_folder_type(source):
1830
if source == Group.TOOL.name:
1931
return ToolFolder
@@ -154,12 +166,20 @@ def one(self):
154166
folder = QuerySet(Folder).filter(id=self.data.get('id')).first()
155167
return FolderSerializer(folder).data
156168

169+
@transaction.atomic
157170
def delete(self):
158171
self.is_valid(raise_exception=True)
159172
if self.data.get('id') == 'root':
160173
raise serializers.ValidationError(_('Cannot delete root folder'))
161174
Folder = get_folder_type(self.data.get('source')) # noqa
162-
QuerySet(Folder).filter(id=self.data.get('id')).delete()
175+
Source = get_source_type(self.data.get('source')) # noqa
176+
nodes = Folder.objects.filter(id=self.data.get('id')).get_descendants(include_self=True)
177+
for node in nodes:
178+
# print(node)
179+
# 删除相关的资源
180+
Source.objects.filter(folder_id=node.id).delete()
181+
# 删除节点
182+
node.delete()
163183

164184

165185
class FolderTreeSerializer(serializers.Serializer):

0 commit comments

Comments
 (0)