diff --git a/netbox_topology_views/__init__.py b/netbox_topology_views/__init__.py index c33addd..64fe8e7 100644 --- a/netbox_topology_views/__init__.py +++ b/netbox_topology_views/__init__.py @@ -14,8 +14,12 @@ class TopologyViewsConfig(PluginConfig): "static_image_directory": "netbox_topology_views/img", "allow_coordinates_saving": False, "always_save_coordinates": False, - } + def ready(self): + from . import signals + + super().ready() + config = TopologyViewsConfig diff --git a/netbox_topology_views/signals.py b/netbox_topology_views/signals.py new file mode 100644 index 0000000..b9dc6b3 --- /dev/null +++ b/netbox_topology_views/signals.py @@ -0,0 +1,14 @@ +from typing import Type + +from dcim.models import DeviceRole +from django.contrib.contenttypes.models import ContentType +from django.db.models.signals import pre_delete +from django.dispatch import receiver + +from netbox_topology_views.models import RoleImage + + +@receiver(pre_delete, sender=DeviceRole, dispatch_uid="delete_hanging_role_image") +def delete_hanging_role_image(sender: Type[DeviceRole], instance: DeviceRole, **kwargs): + ct = ContentType.objects.get_for_model(sender) + RoleImage.objects.filter(content_type=ct, object_id=instance.id).delete() diff --git a/netbox_topology_views/views.py b/netbox_topology_views/views.py index 1cd3446..7ae88b6 100644 --- a/netbox_topology_views/views.py +++ b/netbox_topology_views/views.py @@ -806,4 +806,4 @@ class TopologyIndividualOptionsView(PermissionRequiredMixin, View): "form": form, "object": queryset, }, - ) \ No newline at end of file + )