diff --git a/netbox/extras/views.py b/netbox/extras/views.py index cd564b8d1..4b62604b9 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1,7 +1,6 @@ -from django import template from django.contrib import messages from django.contrib.contenttypes.models import ContentType -from django.db.models import Q +from django.db.models import Count, Q from django.http import Http404, HttpResponseForbidden from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse @@ -45,9 +44,17 @@ class TagView(generic.ObjectView): ) paginate_table(taggeditem_table, request) + object_types = [ + { + 'content_type': ContentType.objects.get(pk=ti['content_type']), + 'item_count': ti['item_count'] + } for ti in tagged_items.values('content_type').annotate(item_count=Count('pk')) + ] + return { 'taggeditem_table': taggeditem_table, 'tagged_item_count': tagged_items.count(), + 'object_types': object_types, } diff --git a/netbox/templates/extras/tag.html b/netbox/templates/extras/tag.html index ae90fdb9c..f8e935992 100644 --- a/netbox/templates/extras/tag.html +++ b/netbox/templates/extras/tag.html @@ -40,6 +40,27 @@ {% plugin_left_page object %}
+
+
+ Tagged Item Types +
+ + {% for object_type in object_types %} + + + + + {% endfor %} +
{{ object_type.content_type.name|bettertitle }} + {% with viewname=object_type.content_type.model_class|validated_viewname:"list" %} + {% if viewname %} + {{ object_type.item_count }} + {% else %} + {{ object_type.item_count }} + {% endif %} + {% endwith %} +
+
{% plugin_right_page object %}
@@ -47,7 +68,7 @@
- Device Types + Tagged Items
{% include 'inc/table.html' with table=taggeditem_table %}