diff --git a/pount/apps/api/signals.py b/pount/apps/api/signals.py index 89e965fabac812f762e9a0b73b0028cd6f860243..34588ce465cb462b06ca849a444e3071906bcec5 100644 --- a/pount/apps/api/signals.py +++ b/pount/apps/api/signals.py @@ -5,7 +5,7 @@ from django.dispatch import receiver from pount.apps.api import models from pount.apps.api.libs.referential import clear_cache_for_referential, delete_referential_in_mongodb from pount.apps.api.models.template import DELETED_SUFFIX -from pount.apps.api.tasks import ensure_media_has_iiif +from pount.apps.api.tasks import clean_iiif_media, ensure_media_has_iiif pre_soft_delete = django.dispatch.Signal() @@ -58,3 +58,9 @@ def _create_project_group_and_permission(project, group_name, role_name): def create_iiif_task(sender, instance: models.item.MediaFile, **kwargs): if instance.component == "Image": ensure_media_has_iiif.delay(instance.id) + + +@receiver(post_delete, sender=models.item.MediaFile) +def remove_iiif_file(sender, instance: models.item.MediaFile, **kwargs): + if instance.component == "Image": + clean_iiif_media.delay(instance.filename) diff --git a/pount/apps/api/tasks.py b/pount/apps/api/tasks.py index 704605aab477e584c1a08d3e4146de82bbe91c38..a8e2806465eef2ae121a4353246a2a9cd8e0ee4c 100644 --- a/pount/apps/api/tasks.py +++ b/pount/apps/api/tasks.py @@ -33,6 +33,19 @@ def handle_update_item_metadata_on_template_save(template_id: UUID) -> None: update_items_using_template(template=template_id) +@shared_task +def clean_iiif_media(media_filename: str) -> None: + import os + + from pount.apps.api.storage_backends import IIIFFileStorage + + iiif_storage = IIIFFileStorage() + basename, _ = os.path.splitext(media_filename) + tiled_tif = f"{basename}.tiled.tif" + iiif_storage.delete(tiled_tif) + logger.debug(f"deleted {tiled_tif}") + + @shared_task def ensure_media_has_iiif(media_id: UUID) -> None: import os @@ -93,5 +106,4 @@ def ensure_media_has_iiif(media_id: UUID) -> None: iiif_storage = IIIFFileStorage() with open(tiled_tif, "rb") as f: iiif_storage.save(os.path.basename(tiled_tif), f) - - logger.debug("MEDIA HAS IIIF") + logger.debug(f"saved {tiled_tif}")