Limit amount of nonracked devices displayed

Fixes #8920

Limits the amount of non-racked devices on Site and Location view to 10 and provides a link to the device list this is pre-filtered to the relevant site or location.
This commit is contained in:
Jason Yates 2022-04-07 08:21:13 +01:00
parent b9f6a5625f
commit c3d9910e08
2 changed files with 57 additions and 29 deletions

View File

@ -346,7 +346,13 @@ class SiteView(generic.ObjectView):
site=instance,
position__isnull=True,
parent_bay__isnull=True
).prefetch_related('device_type__manufacturer')
).prefetch_related('device_type__manufacturer').order_by('-pk')[:10]
total_nonracked_devices_count = Device.objects.filter(
site=instance,
position__isnull=True,
parent_bay__isnull=True
).count()
asns = ASN.objects.restrict(request.user, 'view').filter(sites=instance)
asn_count = asns.count()
@ -358,6 +364,7 @@ class SiteView(generic.ObjectView):
'locations': locations,
'asns': asns,
'nonracked_devices': nonracked_devices,
'total_nonracked_devices_count': total_nonracked_devices_count,
}
@ -439,13 +446,20 @@ class LocationView(generic.ObjectView):
location=instance,
position__isnull=True,
parent_bay__isnull=True
).prefetch_related('device_type__manufacturer')
).prefetch_related('device_type__manufacturer').order_by('-pk')[:10]
total_nonracked_devices_count = Device.objects.filter(
location=instance,
position__isnull=True,
parent_bay__isnull=True
).count()
return {
'rack_count': rack_count,
'device_count': device_count,
'child_locations_table': child_locations_table,
'nonracked_devices': nonracked_devices,
'total_nonracked_devices_count': total_nonracked_devices_count,
}

View File

@ -29,12 +29,26 @@
</tr>
{% endfor %}
</table>
{% if nonracked_devices.count == 10 %}
{% if object|meta:'verbose_name' == 'site' %}
<div class="text-muted">
Displaying 10 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 10 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 %}
{% else %}
<div class="text-muted">
None
</div>
{% endif %}
</div>
{% if perms.dcim.add_device %}
{% if object|meta:'verbose_name' == 'rack' %}
<div class="card-footer text-end noprint">