diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 878bf009a..853ebc46a 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -110,7 +110,7 @@ class ExportTemplateViewSet(ModelViewSet): # class TagViewSet(ModelViewSet): - queryset = Tag.objects.annotate( + queryset = Tag.restricted_objects.annotate( tagged_items=Count('extras_taggeditem_items', distinct=True) ) serializer_class = serializers.TagSerializer diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index 39ac86073..5ced4b962 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -1,5 +1,4 @@ from django.db import models -from django.urls import reverse from django.utils.text import slugify from taggit.models import TagBase, GenericTaggedItemBase @@ -22,7 +21,8 @@ class Tag(TagBase, ChangeLoggedModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() + objects = models.Manager() + restricted_objects = RestrictedQuerySet.as_manager() csv_headers = ['name', 'slug', 'color', 'description'] diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 7b1699398..10e711064 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -2,12 +2,10 @@ import time from django import template from django.conf import settings -from django.contrib import messages from django.contrib.contenttypes.models import ContentType from django.db.models import Count, Prefetch, Q from django.http import Http404, HttpResponseForbidden from django.shortcuts import get_object_or_404, redirect, render -from django.utils.safestring import mark_safe from django.views.generic import View from django_tables2 import RequestConfig @@ -33,7 +31,7 @@ from .scripts import get_scripts, run_script # class TagListView(ObjectListView): - queryset = Tag.objects.annotate( + queryset = Tag.restricted_objects.annotate( items=Count('extras_taggeditem_items', distinct=True) ).order_by( 'name' @@ -44,23 +42,23 @@ class TagListView(ObjectListView): class TagEditView(ObjectEditView): - queryset = Tag.objects.all() + queryset = Tag.restricted_objects.all() model_form = forms.TagForm template_name = 'extras/tag_edit.html' class TagDeleteView(ObjectDeleteView): - queryset = Tag.objects.all() + queryset = Tag.restricted_objects.all() class TagBulkImportView(BulkImportView): - queryset = Tag.objects.all() + queryset = Tag.restricted_objects.all() model_form = forms.TagCSVForm table = tables.TagTable class TagBulkEditView(BulkEditView): - queryset = Tag.objects.annotate( + queryset = Tag.restricted_objects.annotate( items=Count('extras_taggeditem_items', distinct=True) ).order_by( 'name' @@ -70,7 +68,7 @@ class TagBulkEditView(BulkEditView): class TagBulkDeleteView(BulkDeleteView): - queryset = Tag.objects.annotate( + queryset = Tag.restricted_objects.annotate( items=Count('extras_taggeditem_items') ).order_by( 'name' diff --git a/netbox/utilities/filters.py b/netbox/utilities/filters.py index b13c55f40..f628ca917 100644 --- a/netbox/utilities/filters.py +++ b/netbox/utilities/filters.py @@ -102,7 +102,7 @@ class TagFilter(django_filters.ModelMultipleChoiceFilter): kwargs.setdefault('field_name', 'tags__slug') kwargs.setdefault('to_field_name', 'slug') kwargs.setdefault('conjoined', True) - kwargs.setdefault('queryset', Tag.objects.unrestricted()) + kwargs.setdefault('queryset', Tag.objects.all()) super().__init__(*args, **kwargs) diff --git a/netbox/utilities/forms.py b/netbox/utilities/forms.py index 851efd24f..494ae2f29 100644 --- a/netbox/utilities/forms.py +++ b/netbox/utilities/forms.py @@ -596,7 +596,7 @@ class TagFilterField(forms.MultipleChoiceField): def __init__(self, model, *args, **kwargs): def get_choices(): - tags = model.tags.all().unrestricted().annotate( + tags = model.tags.annotate( count=Count('extras_taggeditem_items') ).order_by('name') return [ diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index b9d32d7b0..cb3db2465 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -217,7 +217,7 @@ def prepare_cloned_fields(instance): # Copy tags if is_taggable(instance): - params['tags'] = ','.join([t.name for t in instance.tags.all().unrestricted()]) + params['tags'] = ','.join([t.name for t in instance.tags.all()]) # Concatenate parameters into a URL query string param_string = '&'.join(