diff --git a/netbox/netbox/api/viewsets/__init__.py b/netbox/netbox/api/viewsets/__init__.py index 09cee95bc..2f0431efa 100644 --- a/netbox/netbox/api/viewsets/__init__.py +++ b/netbox/netbox/api/viewsets/__init__.py @@ -34,6 +34,8 @@ class BaseViewSet(GenericViewSet): """ Base class for all API ViewSets. This is responsible for the enforcement of object-based permissions. """ + brief = False + def initial(self, request, *args, **kwargs): super().initial(request, *args, **kwargs) @@ -42,6 +44,13 @@ class BaseViewSet(GenericViewSet): if action := HTTP_ACTIONS[request.method]: self.queryset = self.queryset.restrict(request.user, action) + def initialize_request(self, request, *args, **kwargs): + + # Annotate whether brief mode is active + self.brief = request.method == 'GET' and request.GET.get('brief') + + return super().initialize_request(request, *args, **kwargs) + def get_queryset(self): qs = super().get_queryset() serializer_class = self.get_serializer_class() @@ -77,7 +86,6 @@ class BaseViewSet(GenericViewSet): class NetBoxReadOnlyModelViewSet( - mixins.BriefModeMixin, mixins.CustomFieldsMixin, mixins.ExportTemplatesMixin, drf_mixins.RetrieveModelMixin, @@ -91,7 +99,6 @@ class NetBoxModelViewSet( mixins.BulkUpdateModelMixin, mixins.BulkDestroyModelMixin, mixins.ObjectValidationMixin, - mixins.BriefModeMixin, mixins.CustomFieldsMixin, mixins.ExportTemplatesMixin, drf_mixins.CreateModelMixin, diff --git a/netbox/netbox/api/viewsets/mixins.py b/netbox/netbox/api/viewsets/mixins.py index 7484c91cd..9d8286968 100644 --- a/netbox/netbox/api/viewsets/mixins.py +++ b/netbox/netbox/api/viewsets/mixins.py @@ -9,7 +9,6 @@ from extras.models import ExportTemplate from netbox.api.serializers import BulkOperationSerializer __all__ = ( - 'BriefModeMixin', 'BulkDestroyModelMixin', 'BulkUpdateModelMixin', 'CustomFieldsMixin', @@ -19,20 +18,6 @@ __all__ = ( ) -class BriefModeMixin: - """ - Enables brief mode support, so that the client can invoke a model's nested serializer by passing e.g. - GET /api/dcim/sites/?brief=True - """ - brief = False - - def initialize_request(self, request, *args, **kwargs): - # Annotate whether brief mode is active - self.brief = request.method == 'GET' and request.GET.get('brief') - - return super().initialize_request(request, *args, **kwargs) - - class CustomFieldsMixin: """ For models which support custom fields, populate the `custom_fields` context.