Merge pull request #9067 from jasonyates/FR8920-nonrackeddevices

Limit amount of nonracked devices displayed
This commit is contained in:
Jeremy Stretch 2022-04-12 11:38:14 -04:00 committed by GitHub
commit 8781d03aa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 29 deletions

View File

@ -342,6 +342,7 @@ class SiteView(generic.ObjectView):
'device_count', 'device_count',
cumulative=True cumulative=True
).restrict(request.user, 'view').filter(site=instance) ).restrict(request.user, 'view').filter(site=instance)
nonracked_devices = Device.objects.filter( nonracked_devices = Device.objects.filter(
site=instance, site=instance,
position__isnull=True, position__isnull=True,
@ -357,7 +358,8 @@ class SiteView(generic.ObjectView):
'stats': stats, 'stats': stats,
'locations': locations, 'locations': locations,
'asns': asns, 'asns': asns,
'nonracked_devices': nonracked_devices, 'nonracked_devices': nonracked_devices.order_by('-pk')[:10],
'total_nonracked_devices_count': nonracked_devices.count(),
} }
@ -435,6 +437,7 @@ class LocationView(generic.ObjectView):
).filter(pk__in=location_ids).exclude(pk=instance.pk) ).filter(pk__in=location_ids).exclude(pk=instance.pk)
child_locations_table = tables.LocationTable(child_locations) child_locations_table = tables.LocationTable(child_locations)
child_locations_table.configure(request) child_locations_table.configure(request)
nonracked_devices = Device.objects.filter( nonracked_devices = Device.objects.filter(
location=instance, location=instance,
position__isnull=True, position__isnull=True,
@ -445,7 +448,8 @@ class LocationView(generic.ObjectView):
'rack_count': rack_count, 'rack_count': rack_count,
'device_count': device_count, 'device_count': device_count,
'child_locations_table': child_locations_table, 'child_locations_table': child_locations_table,
'nonracked_devices': nonracked_devices, 'nonracked_devices': nonracked_devices.order_by('-pk')[:10],
'total_nonracked_devices_count': nonracked_devices.count(),
} }

View File

@ -1,40 +1,54 @@
{% load helpers %} {% load helpers %}
<div class="card"> <div class="card">
<h5 class="card-header"> <h5 class="card-header">
Non-Racked Devices Non-Racked Devices
</h5> </h5>
<div class="card-body"> <div class="card-body">
{% if nonracked_devices %} {% if nonracked_devices %}
<table class="table table-hover"> <table class="table table-hover">
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>Role</th> <th>Role</th>
<th>Type</th> <th>Type</th>
<th colspan="2">Parent Device</th> <th colspan="2">Parent Device</th>
</tr> </tr>
{% for device in nonracked_devices %} {% for device in nonracked_devices %}
<tr{% if device.device_type.u_height %} class="warning"{% endif %}> <tr{% if device.device_type.u_height %} class="warning"{% endif %}>
<td> <td>
<a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a> <a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a>
</td> </td>
<td>{{ device.device_role }}</td> <td>{{ device.device_role }}</td>
<td>{{ device.device_type }}</td> <td>{{ device.device_type }}</td>
{% if device.parent_bay %} {% if device.parent_bay %}
<td>{{ device.parent_bay.device|linkify }}</td> <td>{{ device.parent_bay.device|linkify }}</td>
<td>{{ device.parent_bay }}</td> <td>{{ device.parent_bay }}</td>
{% else %} {% else %}
<td colspan="2" class="text-muted">&mdash;</td> <td colspan="2" class="text-muted">&mdash;</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% if total_nonracked_devices_count > nonracked_devices.count %}
{% if object|meta:'verbose_name' == 'site' %}
<div class="text-muted">
Displaying {{ nonracked_devices.count }} of {{ total_nonracked_devices_count }} devices (<a href="{% url 'dcim:device_list' %}?site_id={{ object.pk }}&rack_id=null">View full list</a>)
</div>
{% elif object|meta:'verbose_name' == 'location' %}
<div class="text-muted">
Displaying {{ nonracked_devices.count }} of {{ total_nonracked_devices_count }} devices (<a href="{% url 'dcim:device_list' %}?location_id={{ object.pk }}&rack_id=null">View full list</a>)
</div>
{% endif %} {% endif %}
</tr> {% endif %}
{% endfor %}
</table>
{% else %} {% else %}
<div class="text-muted"> <div class="text-muted">
None None
</div> </div>
{% endif %} {% endif %}
</div> </div>
{% if perms.dcim.add_device %} {% if perms.dcim.add_device %}
{% if object|meta:'verbose_name' == 'rack' %} {% if object|meta:'verbose_name' == 'rack' %}
<div class="card-footer text-end noprint"> <div class="card-footer text-end noprint">