in backend/model_garden/views/media_asset.py [0:0]
def import_s3(self, request):
dataset_serializer = DatasetRawPathSerializer(data={
'bucket': request.data.get('bucketId'),
'path': request.data.get('path'),
'dataset_format': request.data.get('dataset_format'),
})
dataset_serializer.is_valid(raise_exception=True)
dataset = dataset_serializer.save()
s3_client = S3Client(bucket_name=dataset.bucket.name)
assets = [
MediaAsset(
dataset=dataset,
filename=strip_s3_key_prefix(dataset.path, asset.key),
)
for asset in s3_client.list_keys(dataset.path, filter_by=image_ext_filter)
]
assets_before = MediaAsset.objects.filter(dataset=dataset).count()
MediaAsset.objects.bulk_create(
assets,
batch_size=100,
ignore_conflicts=True,
)
assets_after = MediaAsset.objects.filter(dataset=dataset).count()
return Response(
data={'imported': assets_after - assets_before},
status=status.HTTP_200_OK,
)