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 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):

View File

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