From 048175ff419e5762a3126c55b7d106f14c656c32 Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Mon, 7 Apr 2025 17:56:09 -0500 Subject: [PATCH] Fix Service detail page breadcrumb links --- netbox/ipam/views.py | 15 +++++++++++++-- netbox/templates/ipam/service.html | 10 ++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index fbfde7e38..c16c90bbd 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -8,7 +8,7 @@ from django.utils.translation import gettext_lazy as _ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.forms import InterfaceFilterForm -from dcim.models import Interface, Site +from dcim.models import Device, Interface, Site from ipam.tables import VLANTranslationRuleTable from netbox.views import generic from utilities.query import count_related @@ -16,7 +16,7 @@ from utilities.tables import get_table_ordering from utilities.views import GetRelatedModelsMixin, ViewTab, register_model_view from virtualization.filtersets import VMInterfaceFilterSet from virtualization.forms import VMInterfaceFilterForm -from virtualization.models import VMInterface +from virtualization.models import VirtualMachine, VMInterface from . import filtersets, forms, tables from .choices import PrefixStatusChoices from .constants import * @@ -1431,6 +1431,17 @@ class ServiceListView(generic.ObjectListView): class ServiceView(generic.ObjectView): queryset = Service.objects.all() + def get_extra_context(self, request, instance): + context = {} + if isinstance(instance.parent, Device): + context['breadcrumb_queryparam'] = 'device_id' + elif isinstance(instance.parent, VirtualMachine): + context['breadcrumb_queryparam'] = 'virtual_machine_id' + elif isinstance(instance.parent, FHRPGroup): + context['breadcrumb_queryparam'] = 'fhrpgroup_id' + + return context + @register_model_view(Service, 'add', detail=False) class ServiceCreateView(generic.ObjectEditView): diff --git a/netbox/templates/ipam/service.html b/netbox/templates/ipam/service.html index 950438f1e..6f1d7c630 100644 --- a/netbox/templates/ipam/service.html +++ b/netbox/templates/ipam/service.html @@ -7,10 +7,12 @@ {% block breadcrumbs %} {{ block.super }} - {% if object.device %} - - {% elif object.virtual_machine %} - + {% if object.parent and breadcrumb_queryparam %} + {% endif %} {% endblock %}