Fix Service detail page breadcrumb links

This commit is contained in:
Jason Novinger 2025-04-07 17:56:09 -05:00
parent be3d55a032
commit 048175ff41
2 changed files with 19 additions and 6 deletions

View File

@ -8,7 +8,7 @@ from django.utils.translation import gettext_lazy as _
from circuits.models import Provider from circuits.models import Provider
from dcim.filtersets import InterfaceFilterSet from dcim.filtersets import InterfaceFilterSet
from dcim.forms import InterfaceFilterForm from dcim.forms import InterfaceFilterForm
from dcim.models import Interface, Site from dcim.models import Device, Interface, Site
from ipam.tables import VLANTranslationRuleTable from ipam.tables import VLANTranslationRuleTable
from netbox.views import generic from netbox.views import generic
from utilities.query import count_related 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 utilities.views import GetRelatedModelsMixin, ViewTab, register_model_view
from virtualization.filtersets import VMInterfaceFilterSet from virtualization.filtersets import VMInterfaceFilterSet
from virtualization.forms import VMInterfaceFilterForm from virtualization.forms import VMInterfaceFilterForm
from virtualization.models import VMInterface from virtualization.models import VirtualMachine, VMInterface
from . import filtersets, forms, tables from . import filtersets, forms, tables
from .choices import PrefixStatusChoices from .choices import PrefixStatusChoices
from .constants import * from .constants import *
@ -1431,6 +1431,17 @@ class ServiceListView(generic.ObjectListView):
class ServiceView(generic.ObjectView): class ServiceView(generic.ObjectView):
queryset = Service.objects.all() 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) @register_model_view(Service, 'add', detail=False)
class ServiceCreateView(generic.ObjectEditView): class ServiceCreateView(generic.ObjectEditView):

View File

@ -7,10 +7,12 @@
{% block breadcrumbs %} {% block breadcrumbs %}
{{ block.super }} {{ block.super }}
{% if object.device %} {% if object.parent and breadcrumb_queryparam %}
<li class="breadcrumb-item"><a href="{% url 'ipam:service_list' %}?device_id={{ object.device.pk }}">{{ object.device }}</a></li> <li class="breadcrumb-item">
{% elif object.virtual_machine %} <a href="{% url 'ipam:service_list' %}?{{ breadcrumb_queryparam }}={{ object.parent.pk }}">
<li class="breadcrumb-item"><a href="{% url 'ipam:service_list' %}?virtual_machine_id={{ object.virtual_machine.pk }}">{{ object.virtual_machine }}</a></li> {{ object.parent }}
</a>
</li>
{% endif %} {% endif %}
{% endblock %} {% endblock %}