def import_s3()

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,
    )