From 5262b107ead366d9ffcf6307896146f94f0d7dcf Mon Sep 17 00:00:00 2001 From: Georg Krause Date: Wed, 7 Sep 2022 09:09:53 +0000 Subject: [PATCH] Refactor SettingsView to allow openapi generation --- api/funkwhale_api/instance/views.py | 14 ++++++++++---- changes/changelog.d/settingsview.enhancement | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 changes/changelog.d/settingsview.enhancement diff --git a/api/funkwhale_api/instance/views.py b/api/funkwhale_api/instance/views.py index f6d1794af..4c2a8aae8 100644 --- a/api/funkwhale_api/instance/views.py +++ b/api/funkwhale_api/instance/views.py @@ -7,6 +7,7 @@ from dynamic_preferences.api import serializers from dynamic_preferences.api import viewsets as preferences_viewsets from dynamic_preferences.registries import global_preferences_registry from rest_framework import views +from rest_framework import generics from rest_framework.response import Response from funkwhale_api.common import middleware @@ -28,19 +29,24 @@ class AdminSettings(preferences_viewsets.GlobalPreferencesViewSet): required_scope = "instance:settings" -class InstanceSettings(views.APIView): +class InstanceSettings(generics.GenericAPIView): permission_classes = [] authentication_classes = [] + serializer_class = serializers.GlobalPreferenceSerializer - def get(self, request, *args, **kwargs): + def get_queryset(self): manager = global_preferences_registry.manager() manager.all() all_preferences = manager.model.objects.all().order_by("section", "name") api_preferences = [ p for p in all_preferences if getattr(p.preference, "show_in_api", False) ] - data = serializers.GlobalPreferenceSerializer(api_preferences, many=True).data - return Response(data, status=200) + return api_preferences + + def get(self, request): + queryset = self.get_queryset() + serializer = serializers.GlobalPreferenceSerializer(queryset, many=True) + return Response(serializer.data) class NodeInfo(views.APIView): diff --git a/changes/changelog.d/settingsview.enhancement b/changes/changelog.d/settingsview.enhancement new file mode 100644 index 000000000..41ea43c59 --- /dev/null +++ b/changes/changelog.d/settingsview.enhancement @@ -0,0 +1 @@ +Refactor SettingsView to use a proper serializer