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