Skip to content

Commit

Permalink
Closes #4956: Include inventory items on primary device view
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Sep 18, 2020
1 parent 52dc802 commit 584b076
Show file tree
Hide file tree
Showing 6 changed files with 415 additions and 432 deletions.
1 change: 1 addition & 0 deletions docs/release-notes/version-2.10.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
### New Features

* [#1692](https://github.com/netbox-community/netbox/issues/1692) - Allow assigment of inventory items to parent items in web UI
* [#4956](https://github.com/netbox-community/netbox/issues/4956) - Include inventory items on primary device view
* [#5146](https://github.com/netbox-community/netbox/issues/5146) - Add custom fields support for cables, power panels, rack reservations, and virtual chassis

### Other Changes
Expand Down
1 change: 0 additions & 1 deletion netbox/dcim/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,6 @@
path('devices/<int:pk>/delete/', views.DeviceDeleteView.as_view(), name='device_delete'),
path('devices/<int:pk>/config-context/', views.DeviceConfigContextView.as_view(), name='device_configcontext'),
path('devices/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='device_changelog', kwargs={'model': Device}),
path('devices/<int:pk>/inventory/', views.DeviceInventoryView.as_view(), name='device_inventory'),
path('devices/<int:pk>/status/', views.DeviceStatusView.as_view(), name='device_status'),
path('devices/<int:pk>/lldp-neighbors/', views.DeviceLLDPNeighborsView.as_view(), name='device_lldp_neighbors'),
path('devices/<int:pk>/config/', views.DeviceConfigView.as_view(), name='device_config'),
Expand Down
25 changes: 7 additions & 18 deletions netbox/dcim/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1050,6 +1050,11 @@ def get(self, request, pk):
'installed_device__device_type__manufacturer',
)

# Inventory items
inventoryitems = InventoryItem.objects.restrict(request.user, 'view').filter(
device=device
).prefetch_related('manufacturer')

# Services
services = Service.objects.restrict(request.user, 'view').filter(device=device)

Expand All @@ -1072,33 +1077,17 @@ def get(self, request, pk):
'powerports': powerports,
'poweroutlets': poweroutlets,
'interfaces': interfaces,
'devicebays': devicebays,
'frontports': frontports,
'rearports': rearports,
'devicebays': devicebays,
'inventoryitems': inventoryitems,
'services': services,
'secrets': secrets,
'vc_members': vc_members,
'related_devices': related_devices,
})


class DeviceInventoryView(ObjectView):
queryset = Device.objects.all()

def get(self, request, pk):

device = get_object_or_404(self.queryset, pk=pk)
inventory_items = InventoryItem.objects.restrict(request.user, 'view').filter(
device=device
).prefetch_related('manufacturer')

return render(request, 'dcim/device_inventory.html', {
'device': device,
'inventory_items': inventory_items,
'active_tab': 'inventory',
})


class DeviceStatusView(ObjectView):
additional_permissions = ['dcim.napalm_read_device']
queryset = Device.objects.all()
Expand Down
Loading

0 comments on commit 584b076

Please sign in to comment.