fix(ui): Add hierarchical breadcrumbs for nested objects

Display ancestor hierarchy in breadcrumbs for DeviceRole, Platform, and
PowerPanel detail views. Shows full parent chain with filtering links
to improve navigation through nested object relationships.

Fixes #22957
This commit is contained in:
Martin Hauser 2026-08-18 21:44:37 +02:00 committed by Jeremy Stretch
parent 9c163ba2dd
commit e56d84ff5f
1 changed files with 14 additions and 2 deletions

View File

@ -2869,6 +2869,10 @@ class PlatformView(GetRelatedModelsMixin, generic.ObjectView):
layout = layout.SimpleLayout(
breadcrumbs=[
Breadcrumb('manufacturer', url=filtered_list_url('dcim:platform_list', 'manufacturer_id')),
Breadcrumb(
lambda o: o.get_ancestors(),
url=filtered_list_url('dcim:platform_list', 'parent_id'),
),
],
left_panels=[
panels.PlatformPanel(),
@ -5404,7 +5408,11 @@ class PowerPanelView(GetRelatedModelsMixin, generic.ObjectView):
layout = layout.SimpleLayout(
breadcrumbs=[
Breadcrumb('site', url=filtered_list_url('dcim:powerpanel_list', 'site_id')),
Breadcrumb('location'),
Breadcrumb(
lambda o: o.location.get_ancestors() if o.location else [],
url=filtered_list_url('dcim:powerpanel_list', 'location_id'),
),
Breadcrumb('location', url=filtered_list_url('dcim:powerpanel_list', 'location_id')),
],
left_panels=[
panels.PowerPanelPanel(),
@ -5583,7 +5591,11 @@ class CoolingSourceView(GetRelatedModelsMixin, generic.ObjectView):
layout = layout.SimpleLayout(
breadcrumbs=[
Breadcrumb('site', url=filtered_list_url('dcim:coolingsource_list', 'site_id')),
Breadcrumb('location'),
Breadcrumb(
lambda o: o.location.get_ancestors() if o.location else [],
url=filtered_list_url('dcim:coolingsource_list', 'location_id'),
),
Breadcrumb('location', url=filtered_list_url('dcim:coolingsource_list', 'location_id')),
],
left_panels=[
panels.CoolingSourcePanel(),