Skip to content
Snippets Groups Projects
Commit d79a9141 authored by Mickael Desfrenes's avatar Mickael Desfrenes
Browse files

clean iiif file when media is removed

parent 81ef4e38
No related merge requests found
Pipeline #301400 failed with stage
in 12 minutes and 38 seconds
...@@ -5,7 +5,7 @@ from django.dispatch import receiver ...@@ -5,7 +5,7 @@ from django.dispatch import receiver
from pount.apps.api import models 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.libs.referential import clear_cache_for_referential, delete_referential_in_mongodb
from pount.apps.api.models.template import DELETED_SUFFIX 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() pre_soft_delete = django.dispatch.Signal()
...@@ -58,3 +58,9 @@ def _create_project_group_and_permission(project, group_name, role_name): ...@@ -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): def create_iiif_task(sender, instance: models.item.MediaFile, **kwargs):
if instance.component == "Image": if instance.component == "Image":
ensure_media_has_iiif.delay(instance.id) 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)
...@@ -33,6 +33,19 @@ def handle_update_item_metadata_on_template_save(template_id: UUID) -> None: ...@@ -33,6 +33,19 @@ def handle_update_item_metadata_on_template_save(template_id: UUID) -> None:
update_items_using_template(template=template_id) 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 @shared_task
def ensure_media_has_iiif(media_id: UUID) -> None: def ensure_media_has_iiif(media_id: UUID) -> None:
import os import os
...@@ -93,5 +106,4 @@ def ensure_media_has_iiif(media_id: UUID) -> None: ...@@ -93,5 +106,4 @@ def ensure_media_has_iiif(media_id: UUID) -> None:
iiif_storage = IIIFFileStorage() iiif_storage = IIIFFileStorage()
with open(tiled_tif, "rb") as f: with open(tiled_tif, "rb") as f:
iiif_storage.save(os.path.basename(tiled_tif), f) iiif_storage.save(os.path.basename(tiled_tif), f)
logger.debug(f"saved {tiled_tif}")
logger.debug("MEDIA HAS IIIF")
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment