Fixes #276: Delete RoleImages when their DeviceRole is deleted (#279)

* [fix] get only valid role images

* [up] add post delete signals for device roles

* [fix] move signal registration in `apps.py`

* [fix] register signals in plugin config & filter valid role images

* [fix] undo role image filter as it is wrong and unnecessary

* [up] revert formatting with black
This commit is contained in:
Victor Gorchilov
2023-04-20 20:55:58 +02:00
committed by GitHub
parent d3dc955987
commit 3671bbbc78
3 changed files with 20 additions and 2 deletions
+5 -1
View File
@@ -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
+14
View File
@@ -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()
+1 -1
View File
@@ -806,4 +806,4 @@ class TopologyIndividualOptionsView(PermissionRequiredMixin, View):
"form": form,
"object": queryset,
},
)
)