(self, instance, with_valid=True)
| 1208 | tool_id = serializers.UUIDField(required=True, label=_("tool id")) |
| 1209 | |
| 1210 | def add(self, instance, with_valid=True): |
| 1211 | if with_valid: |
| 1212 | self.is_valid(raise_exception=True) |
| 1213 | AddInternalToolRequest(data=instance).is_valid(raise_exception=True) |
| 1214 | |
| 1215 | internal_tool = QuerySet(Tool).filter(id=self.data.get("tool_id")).first() |
| 1216 | if internal_tool is None: |
| 1217 | raise AppApiException(500, _("Tool does not exist")) |
| 1218 | |
| 1219 | tool_id = uuid.uuid7() |
| 1220 | tool = Tool( |
| 1221 | id=tool_id, |
| 1222 | name=instance.get("name", internal_tool.name), |
| 1223 | desc=internal_tool.desc, |
| 1224 | code=internal_tool.code, |
| 1225 | user_id=self.data.get("user_id"), |
| 1226 | icon=internal_tool.icon, |
| 1227 | workspace_id=self.data.get("workspace_id"), |
| 1228 | input_field_list=internal_tool.input_field_list, |
| 1229 | init_field_list=internal_tool.init_field_list, |
| 1230 | scope=ToolScope.WORKSPACE, |
| 1231 | tool_type=ToolType.CUSTOM, |
| 1232 | folder_id=instance.get("folder_id", self.data.get("workspace_id")), |
| 1233 | template_id=internal_tool.id, |
| 1234 | label=internal_tool.label, |
| 1235 | is_active=False, |
| 1236 | ) |
| 1237 | tool.save() |
| 1238 | |
| 1239 | # 自动授权给创建者 |
| 1240 | UserResourcePermissionSerializer( |
| 1241 | data={ |
| 1242 | "workspace_id": self.data.get("workspace_id"), |
| 1243 | "user_id": self.data.get("user_id"), |
| 1244 | "auth_target_type": AuthTargetType.TOOL.value, |
| 1245 | } |
| 1246 | ).auth_resource(str(tool_id)) |
| 1247 | |
| 1248 | return ToolModelSerializer(tool).data |
| 1249 | |
| 1250 | class StoreTool(serializers.Serializer): |
| 1251 | user_id = serializers.UUIDField(required=True, label=_("User ID")) |
nothing calls this directly
no test coverage detected