MCPcopy Create free account
hub / github.com/HumanSignal/label-studio / ImportStorageListFilesAPI

Class ImportStorageListFilesAPI

label_studio/io_storages/api.py:192–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

190
191@extend_schema(exclude=True)
192class ImportStorageListFilesAPI(generics.CreateAPIView):
193
194 permission_required = all_permissions.storages_change
195 parser_classes = (JSONParser, FormParser, MultiPartParser)
196 serializer_class = None # Default serializer
197
198 def __init__(self, serializer_class=None, *args, **kwargs):
199 self.serializer_class = serializer_class
200 super().__init__(*args, **kwargs)
201
202 @extend_schema(exclude=True)
203 def create(self, request, *args, **kwargs):
204 from .functions import validate_storage_instance
205
206 instance = validate_storage_instance(request, self.serializer_class)
207 limit = int(request.data.get('limit', settings.DEFAULT_STORAGE_LIST_LIMIT))
208
209 try:
210 files = []
211 start_time = time.time()
212 timeout_seconds = 30
213
214 for object in instance.iter_objects():
215 files.append(instance.get_unified_metadata(object))
216
217 # Check if we've reached the file limit
218 if len(files) >= limit:
219 files.append({'key': None, 'last_modified': None, 'size': None})
220 break
221
222 # Check if we've exceeded the timeout
223 if time.time() - start_time > timeout_seconds:
224 files.append({'key': '... storage scan timeout reached ...', 'last_modified': None, 'size': None})
225 break
226
227 return Response({'files': files})
228 except Exception as exc:
229 logger.exception('Error listing storage files: %s', exc)
230 raise ValidationError('Failed to list storage files')
231
232
233@extend_schema(exclude=True)

Calls

no outgoing calls