refactor: enhance deletion process by removing associated permissions for knowledge, model, and tool
This commit is contained in:
parent
58dde6629b
commit
9541b27d76
@ -384,6 +384,7 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||||||
QuerySet(ProblemParagraphMapping).filter(knowledge=knowledge).delete()
|
QuerySet(ProblemParagraphMapping).filter(knowledge=knowledge).delete()
|
||||||
QuerySet(Paragraph).filter(knowledge=knowledge).delete()
|
QuerySet(Paragraph).filter(knowledge=knowledge).delete()
|
||||||
QuerySet(Problem).filter(knowledge=knowledge).delete()
|
QuerySet(Problem).filter(knowledge=knowledge).delete()
|
||||||
|
QuerySet(WorkspaceUserResourcePermission).filter(target=knowledge.id).delete()
|
||||||
knowledge.delete()
|
knowledge.delete()
|
||||||
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
|
delete_embedding_by_knowledge(self.data.get('knowledge_id'))
|
||||||
return True
|
return True
|
||||||
|
|||||||
@ -7,6 +7,7 @@ from typing import Dict
|
|||||||
|
|
||||||
import uuid_utils.compat as uuid
|
import uuid_utils.compat as uuid
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
|
from django.db import transaction
|
||||||
from django.db.models import QuerySet
|
from django.db.models import QuerySet
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
@ -160,11 +161,15 @@ class ModelSerializer(serializers.Serializer):
|
|||||||
QuerySet(Model).filter(id=self.data.get('id')).update(status=Status.PAUSE_DOWNLOAD)
|
QuerySet(Model).filter(id=self.data.get('id')).update(status=Status.PAUSE_DOWNLOAD)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@transaction.atomic
|
||||||
def delete(self, with_valid=True):
|
def delete(self, with_valid=True):
|
||||||
if with_valid:
|
if with_valid:
|
||||||
super().is_valid(raise_exception=True)
|
super().is_valid(raise_exception=True)
|
||||||
model_id = self.data.get('id')
|
model_id = self.data.get('id')
|
||||||
model = Model.objects.filter(id=model_id).first()
|
model = Model.objects.filter(id=model_id).first()
|
||||||
|
if model is None:
|
||||||
|
return True
|
||||||
|
QuerySet(WorkspaceUserResourcePermission).filter(target=model_id).delete()
|
||||||
# TODO : 这里可以添加模型删除的逻辑,需要注意删除模型时的权限和关联关系
|
# TODO : 这里可以添加模型删除的逻辑,需要注意删除模型时的权限和关联关系
|
||||||
# if model.model_type == 'LLM':
|
# if model.model_type == 'LLM':
|
||||||
# application_count = Application.objects.filter(model_id=model_id).count()
|
# application_count = Application.objects.filter(model_id=model_id).count()
|
||||||
|
|||||||
@ -336,6 +336,7 @@ class ToolSerializer(serializers.Serializer):
|
|||||||
tool = QuerySet(Tool).filter(id=self.data.get('id')).first()
|
tool = QuerySet(Tool).filter(id=self.data.get('id')).first()
|
||||||
if tool.template_id is None and tool.icon != '/ui/favicon.ico':
|
if tool.template_id is None and tool.icon != '/ui/favicon.ico':
|
||||||
QuerySet(File).filter(id=tool.icon.split('/')[-1]).delete()
|
QuerySet(File).filter(id=tool.icon.split('/')[-1]).delete()
|
||||||
|
QuerySet(WorkspaceUserResourcePermission).filter(target=tool.id).delete()
|
||||||
QuerySet(Tool).filter(id=self.data.get('id')).delete()
|
QuerySet(Tool).filter(id=self.data.get('id')).delete()
|
||||||
|
|
||||||
def one(self):
|
def one(self):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user