import os
from django.conf import settings
from django.db.models.signals import post_delete
from django.dispatch import receiver

from .models import PostImages


@receiver(post_delete, sender=PostImages)
def delete_image_file(sender, instance, **kwargs):
    """
    Deletes the associated image file from the filesystem when a PostImages instance is deleted.
    """
    # Check if the instance has a path and the path is not empty
    if instance.path:
        file_path = os.path.join(settings.MEDIA_ROOT, instance.path)
        if os.path.exists(file_path):
            try:
                os.remove(file_path)
            except OSError as e:
                # Optionally, log the error e.g., print(f"Error deleting file {file_path}: {e}")
                pass
