From a949de8d5f5120f928478a4148aea8834d8da9f3 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 24 Jan 2023 14:20:46 -0800 Subject: [PATCH] 9608 try setting serializer_class for APIView --- netbox/dcim/api/views.py | 4 +++- netbox/ipam/api/views.py | 2 ++ netbox/netbox/api/views.py | 2 ++ netbox/users/api/views.py | 5 +++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 7080f75ce..0b467c60f 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -2,7 +2,7 @@ import socket from django.http import Http404, HttpResponse, HttpResponseForbidden from django.shortcuts import get_object_or_404 -from drf_spectacular.utils import OpenApiParameter +from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter from drf_spectacular.types import OpenApiTypes from rest_framework.decorators import action from rest_framework.response import Response @@ -725,10 +725,12 @@ class ConnectedDeviceViewSet(ViewSet): required=True, type=OpenApiTypes.STR ) + serializer_class = serializers.DeviceSerializer # for drf-spectacular def get_view_name(self): return "Connected Device Locator" + @extend_schema(responses={200: OpenApiTypes.OBJECT}) def list(self, request): peer_device_name = request.query_params.get(self._device_param.name) diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index c8f0c90d7..fd80e0c6f 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -203,6 +203,7 @@ def get_results_limit(request): class AvailablePrefixesView(ObjectValidationMixin, APIView): queryset = Prefix.objects.all() + serializer_class = serializers.PrefixSerializer # for drf-spectacular @extend_schema(methods=["get"], responses={200: serializers.AvailablePrefixSerializer(many=True)}) def get(self, request, pk): @@ -282,6 +283,7 @@ class AvailablePrefixesView(ObjectValidationMixin, APIView): class AvailableIPAddressesView(ObjectValidationMixin, APIView): queryset = IPAddress.objects.all() + serializer_class = serializers.IPAddressSerializer # for drf-spectacular def get_parent(self, request, pk): raise NotImplemented() diff --git a/netbox/netbox/api/views.py b/netbox/netbox/api/views.py index 51f1e5cd4..fecf6d985 100644 --- a/netbox/netbox/api/views.py +++ b/netbox/netbox/api/views.py @@ -5,6 +5,7 @@ from django.apps import apps from django.conf import settings from django_rq.queues import get_connection from drf_spectacular.utils import extend_schema +from drf_spectacular.types import OpenApiTypes from rest_framework.response import Response from rest_framework.reverse import reverse from rest_framework.views import APIView @@ -46,6 +47,7 @@ class StatusView(APIView): """ permission_classes = [IsAuthenticatedOrLoginNotRequired] + @extend_schema(responses={200: OpenApiTypes.OBJECT}) def get(self, request): # Gather the version numbers from all installed Django apps installed_apps = {} diff --git a/netbox/users/api/views.py b/netbox/users/api/views.py index bb2342527..548c1d898 100644 --- a/netbox/users/api/views.py +++ b/netbox/users/api/views.py @@ -1,6 +1,8 @@ from django.contrib.auth import authenticate from django.contrib.auth.models import Group, User from django.db.models import Count +from drf_spectacular.utils import extend_schema +from drf_spectacular.types import OpenApiTypes from rest_framework.exceptions import AuthenticationFailed from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response @@ -68,6 +70,7 @@ class TokenProvisionView(APIView): """ permission_classes = [] + @extend_schema(methods=["post"], responses={201: serializers.TokenSerializer}) def post(self, request): serializer = serializers.TokenProvisionSerializer(data=request.data) serializer.is_valid() @@ -114,6 +117,7 @@ class UserConfigViewSet(ViewSet): def get_queryset(self): return UserConfig.objects.filter(user=self.request.user) + @extend_schema(responses={200: OpenApiTypes.OBJECT}) def list(self, request): """ Return the UserConfig for the currently authenticated User. @@ -122,6 +126,7 @@ class UserConfigViewSet(ViewSet): return Response(userconfig.data) + @extend_schema(methods=["patch"], responses={201: OpenApiTypes.OBJECT}) def patch(self, request): """ Update the UserConfig for the currently authenticated User.