|
|
@@ -20,7 +20,7 @@ from common.result import result
|
|
|
from common.utils.common import query_params_to_single_dict
|
|
|
from models_provider.api.model import ModelCreateAPI, GetModelApi, ModelEditApi, ModelListResponse, DefaultModelResponse
|
|
|
from models_provider.api.provide import ProvideApi
|
|
|
-from models_provider.models import Model
|
|
|
+from models_provider.models import Model, Status
|
|
|
from models_provider.serializers.model_serializer import ModelSerializer, \
|
|
|
WorkspaceSharedModelSerializer
|
|
|
from system_manage.views import encryption_str
|
|
|
@@ -264,6 +264,59 @@ class ModelSetting(APIView):
|
|
|
return result.success(
|
|
|
ModelSerializer.Operate(data={'id': model_id, 'workspace_id': workspace_id}).pause_download())
|
|
|
|
|
|
+ class BatchDelete(APIView):
|
|
|
+ """批量删除模型"""
|
|
|
+ authentication_classes = [TokenAuth]
|
|
|
+
|
|
|
+ @extend_schema(methods=['POST'],
|
|
|
+ summary=_('Batch delete models'),
|
|
|
+ description=_('Batch delete models'),
|
|
|
+ operation_id=_('Batch delete models'),
|
|
|
+ tags=[_('Model')])
|
|
|
+ @has_permissions(PermissionConstants.MODEL_DELETE.get_workspace_permission(),
|
|
|
+ PermissionConstants.MODEL_DELETE.get_workspace_permission_workspace_manage_role(),
|
|
|
+ RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
|
|
|
+ RoleConstants.USER.get_workspace_role())
|
|
|
+ def post(self, request: Request, workspace_id: str):
|
|
|
+ model_ids = request.data.get('model_ids', [])
|
|
|
+ if not model_ids:
|
|
|
+ return result.success({'deleted_count': 0})
|
|
|
+
|
|
|
+ deleted_count = 0
|
|
|
+ for model_id in model_ids:
|
|
|
+ try:
|
|
|
+ ModelSerializer.Operate(
|
|
|
+ data={'id': model_id, 'user_id': request.user.id, 'workspace_id': workspace_id}
|
|
|
+ ).delete()
|
|
|
+ deleted_count += 1
|
|
|
+ except Exception:
|
|
|
+ pass
|
|
|
+ return result.success({'deleted_count': deleted_count})
|
|
|
+
|
|
|
+ class BatchOperate(APIView):
|
|
|
+ """批量设置模型状态"""
|
|
|
+ authentication_classes = [TokenAuth]
|
|
|
+
|
|
|
+ @extend_schema(methods=['POST'],
|
|
|
+ summary=_('Batch update model status'),
|
|
|
+ description=_('Batch update model status'),
|
|
|
+ operation_id=_('Batch update model status'),
|
|
|
+ tags=[_('Model')])
|
|
|
+ @has_permissions(PermissionConstants.MODEL_EDIT.get_workspace_permission(),
|
|
|
+ PermissionConstants.MODEL_EDIT.get_workspace_permission_workspace_manage_role(),
|
|
|
+ RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
|
|
|
+ RoleConstants.USER.get_workspace_role())
|
|
|
+ def post(self, request: Request, workspace_id: str):
|
|
|
+ model_ids = request.data.get('model_ids', [])
|
|
|
+ status = request.data.get('status', '')
|
|
|
+ if not model_ids or status not in [s[0] for s in Status.choices]:
|
|
|
+ return result.success({'updated_count': 0})
|
|
|
+
|
|
|
+ updated_count = QuerySet(Model).filter(
|
|
|
+ id__in=model_ids, workspace_id=workspace_id
|
|
|
+ ).update(status=status)
|
|
|
+ return result.success({'updated_count': updated_count})
|
|
|
+
|
|
|
|
|
|
class WorkspaceSharedModelSetting(APIView):
|
|
|
authentication_classes = [TokenAuth]
|