diff --git a/validity/templates/validity/serializer.html b/validity/templates/validity/serializer.html index 158dde3..88f25b2 100644 --- a/validity/templates/validity/serializer.html +++ b/validity/templates/validity/serializer.html @@ -22,6 +22,9 @@
Serializer
+
+ {% include 'inc/panels/related_objects.html' %} +
{% include 'inc/panels/tags.html' %}
@@ -38,7 +41,7 @@
Template [Source: {{ object | data_source }}]
-
Bound Devices
+
All Bound Devices
{% include 'validity/inc/search_form.html' with model='Device' %} diff --git a/validity/views/serializer.py b/validity/views/serializer.py index 1a5b2b7..e65189d 100644 --- a/validity/views/serializer.py +++ b/validity/views/serializer.py @@ -1,5 +1,7 @@ from dcim.filtersets import DeviceFilterSet +from dcim.models import Device, DeviceType, Manufacturer from dcim.tables import DeviceTable +from django.db.models import Q from netbox.views import generic from utilities.views import register_model_view @@ -21,6 +23,17 @@ class SerializerView(TableMixin, generic.ObjectView): table = DeviceTable filterset = DeviceFilterSet + def get_extra_context(self, request, instance): + cf_filter = Q(custom_field_data__serializer=instance.pk) + related_models = [ + (model.objects.restrict(request.user, "view").filter(cf_filter), "cf_serializer") + for model in (Device, DeviceType, Manufacturer) + ] + related_models.append( + (models.Command.objects.restrict(request.user, "view").filter(serializer=instance), "serializer_id") + ) + return super().get_extra_context(request, instance) | {"related_models": related_models} + @register_model_view(models.Serializer, "delete") class SerializerDeleteView(generic.ObjectDeleteView):