Skip to content

Commit 9541b27

Browse files
committed
refactor: enhance deletion process by removing associated permissions for knowledge, model, and tool
1 parent 58dde66 commit 9541b27

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

apps/knowledge/serializers/knowledge.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ def delete(self):
384384
QuerySet(ProblemParagraphMapping).filter(knowledge=knowledge).delete()
385385
QuerySet(Paragraph).filter(knowledge=knowledge).delete()
386386
QuerySet(Problem).filter(knowledge=knowledge).delete()
387+
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
387388
knowledge.delete()
388389
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
389390
return True

apps/models_provider/serializers/model_serializer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import uuid_utils.compat as uuid
99
from django.core.cache import cache
10+
from django.db import transaction
1011
from django.db.models import QuerySet
1112
from django.utils.translation import gettext_lazy as _
1213
from rest_framework import serializers
@@ -160,11 +161,15 @@ def pause_download(self, with_valid=True):
160161
QuerySet(Model).filter(id=self.data.get('id')).update(status=Status.PAUSE_DOWNLOAD)
161162
return True
162163

164+
@transaction.atomic
163165
def delete(self, with_valid=True):
164166
if with_valid:
165167
super().is_valid(raise_exception=True)
166168
model_id = self.data.get('id')
167169
model = Model.objects.filter(id=model_id).first()
170+
if model is None:
171+
return True
172+
QuerySet(WorkspaceUserResourcePermission).filter(target=model_id).delete()
168173
# TODO : 这里可以添加模型删除的逻辑,需要注意删除模型时的权限和关联关系
169174
# if model.model_type == 'LLM':
170175
# application_count = Application.objects.filter(model_id=model_id).count()

apps/tools/serializers/tool.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ def delete(self):
336336
tool = QuerySet(Tool).filter(id=self.data.get('id')).first()
337337
if tool.template_id is None and tool.icon != '/ui/favicon.ico':
338338
QuerySet(File).filter(id=tool.icon.split('/')[-1]).delete()
339+
QuerySet(WorkspaceUserResourcePermission).filter(target=tool.id).delete()
339340
QuerySet(Tool).filter(id=self.data.get('id')).delete()
340341

341342
def one(self):

0 commit comments

Comments
 (0)