def delete_queryset()

in backend/model_garden/admin/dataset.py [0:0]


  def delete_queryset(self, request, queryset):
    media_assets = list(get_media_assets(queryset))

    bucket_map = defaultdict(list)
    for asset in media_assets:
      bucket_map[asset.dataset.bucket.name].append(asset)

    error_keys: Set[Tuple(str, str)] = set()
    for bucket, assets in bucket_map.items():
      file_path_to_remove = ([asset.full_path for asset in assets]
                             + [asset.full_label_path for asset in assets])
      delete_errors = delete_files_in_s3(
        bucket, file_path_to_remove,
      )
      error_keys |= set((bucket, error.key) for error in delete_errors)

    (
      MediaAsset.objects
      .filter(
        pk__in=[
          asset.pk for asset in media_assets
          if (asset.dataset.bucket.name, asset.full_path) not in error_keys
        ],
      ).delete()
    )
    (
      queryset
      .exclude(
        pk__in=set(
          asset.dataset.pk for asset in media_assets
          if (asset.dataset.bucket.name, asset.full_path) in error_keys
        ),
      )
      .delete()
    )