mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Convert device inventory items list to table
This commit is contained in:
parent
7c1316619b
commit
82c6fb6e19
@ -26,6 +26,7 @@ __all__ = (
|
||||
'DeviceFrontPortTable',
|
||||
'DeviceImportTable',
|
||||
'DeviceInterfaceTable',
|
||||
'DeviceInventoryItemTable',
|
||||
'DevicePowerPortTable',
|
||||
'DevicePowerOutletTable',
|
||||
'DeviceRearPortTable',
|
||||
@ -566,6 +567,26 @@ class InventoryItemTable(DeviceComponentTable):
|
||||
default_columns = ('pk', 'device', 'name', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag')
|
||||
|
||||
|
||||
class DeviceInventoryItemTable(DeviceBayTable):
|
||||
name = tables.TemplateColumn(
|
||||
template_code='<a href="{{ record.get_absolute_url }}" style="padding-left: {{ record.level }}0px">'
|
||||
'{{ value }}</a>'
|
||||
)
|
||||
actions = ButtonsColumn(
|
||||
model=InventoryItem,
|
||||
buttons=('edit', 'delete')
|
||||
)
|
||||
|
||||
class Meta(DeviceComponentTable.Meta):
|
||||
model = InventoryItem
|
||||
fields = (
|
||||
'pk', 'name', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description', 'tags', 'actions',
|
||||
)
|
||||
default_columns = (
|
||||
'pk', 'name', 'label', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description', 'actions',
|
||||
)
|
||||
|
||||
|
||||
#
|
||||
# Virtual chassis
|
||||
#
|
||||
|
@ -1086,6 +1086,9 @@ class DeviceView(ObjectView):
|
||||
inventoryitems = InventoryItem.objects.restrict(request.user, 'view').filter(
|
||||
device=device
|
||||
).prefetch_related('manufacturer')
|
||||
inventoryitem_table = tables.DeviceInventoryItemTable(inventoryitems, orderable=False)
|
||||
if request.user.has_perm('dcim.change_inventoryitem') or request.user.has_perm('dcim.delete_inventoryitem'):
|
||||
devicebay_table.columns.show('pk')
|
||||
|
||||
# Services
|
||||
services = Service.objects.restrict(request.user, 'view').filter(device=device)
|
||||
@ -1112,7 +1115,7 @@ class DeviceView(ObjectView):
|
||||
'frontport_table': frontport_table,
|
||||
'rearport_table': rearport_table,
|
||||
'devicebay_table': devicebay_table,
|
||||
'inventoryitems': inventoryitems,
|
||||
'inventoryitem_table': inventoryitem_table,
|
||||
'services': services,
|
||||
'secrets': secrets,
|
||||
'vc_members': vc_members,
|
||||
|
@ -146,7 +146,7 @@
|
||||
<a href="#devicebays" role="tab" data-toggle="tab">Device Bays {% badge devicebay_table.rows|length %}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#inventoryitems" role="tab" data-toggle="tab">Inventory {% badge inventoryitems|length %}</a>
|
||||
<a href="#inventoryitems" role="tab" data-toggle="tab">Inventory {% badge inventoryitem_table.rows|length %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
@ -785,28 +785,7 @@
|
||||
<div class="panel-heading">
|
||||
<strong>Inventory Items</strong>
|
||||
</div>
|
||||
<table class="table table-hover table-condensed panel-body" id="hardware">
|
||||
<thead>
|
||||
<tr>
|
||||
{% if perms.dcim.change_inventoryitem or perms.dcim.delete_inventoryitem %}
|
||||
<th class="pk"><input type="checkbox" class="toggle" title="Toggle all" /></th>
|
||||
{% endif %}
|
||||
<th>Name</th>
|
||||
<th>Manufacturer</th>
|
||||
<th>Part ID</th>
|
||||
<th>Serial Number</th>
|
||||
<th>Asset Tag</th>
|
||||
<th>Discovered</th>
|
||||
<th>Description</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in inventoryitems %}
|
||||
{% include 'dcim/inc/inventoryitem.html' %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% include 'responsive_table.html' with table=inventoryitem_table %}
|
||||
<div class="panel-footer noprint">
|
||||
{% if inventoryitems and perms.dcim.change_inventoryitem %}
|
||||
<button type="submit" name="_rename" formaction="{% url 'dcim:inventoryitem_bulk_rename' %}?return_url={{ device.get_absolute_url }}" class="btn btn-warning btn-xs">
|
||||
@ -828,6 +807,7 @@
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -1,40 +0,0 @@
|
||||
{% load helpers %}
|
||||
<tr>
|
||||
|
||||
{# Checkbox #}
|
||||
{% if perms.dcim.change_inventoryitem or perms.dcim.delete_inventoryitem %}
|
||||
<td class="pk">
|
||||
<input name="pk" type="checkbox" value="{{ item.pk }}" />
|
||||
</td>
|
||||
{% endif %}
|
||||
|
||||
<td style="padding-left: {{ item.level }}0px">
|
||||
<a href="{{ item.get_absolute_url }}">{{ item }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if item.manufacturer %}
|
||||
<a href="{{ item.manufacturer.get_absolute_url }}">{{ item.manufacturer }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">—</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ item.part_id|placeholder }}</td>
|
||||
<td>{{ item.serial|placeholder }}</td>
|
||||
<td>{{ item.asset_tag|placeholder }}</td>
|
||||
<td>
|
||||
{% if item.discovered %}
|
||||
<span class="text-success"><i class="fa fa-check"></i></span>
|
||||
{% else %}
|
||||
<span class="text-muted">—</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ item.description|placeholder }}</td>
|
||||
<td class="text-right noprint">
|
||||
{% if perms.dcim.change_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_edit' pk=item.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-xs btn-warning"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
|
||||
{% endif %}
|
||||
{% if perms.dcim.delete_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_delete' pk=item.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
Loading…
Reference in New Issue
Block a user