From c10f5cd90b4b2ea292e2657f6e2fdd07d6898332 Mon Sep 17 00:00:00 2001 From: sambles Date: Fri, 12 Jul 2024 13:11:48 +0100 Subject: [PATCH] Fix/api responses v2 (#1081) * Fix analysis to return AnalysesList * Fix model serializer for queues --- .../oasisapi/analyses/v2_api/viewsets.py | 30 +++++++++---------- src/server/oasisapi/queues/serializers.py | 6 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/server/oasisapi/analyses/v2_api/viewsets.py b/src/server/oasisapi/analyses/v2_api/viewsets.py index c72834f33..e04a770c0 100644 --- a/src/server/oasisapi/analyses/v2_api/viewsets.py +++ b/src/server/oasisapi/analyses/v2_api/viewsets.py @@ -253,7 +253,7 @@ class AnalysisViewSet(VerifyGroupAccessModelViewSet): 'cancel_analysis_run'] # queryset = Analysis.objects.all().select_related(*file_action_types).prefetch_related('complex_model_data_files') - serializer_class = AnalysisSerializer + serializer_class = AnalysisListSerializer filterset_class = AnalysisFilter group_access_model = Analysis @@ -267,9 +267,9 @@ def get_queryset(self): def get_serializer_class(self): if self.action in ['create', 'options', 'update', 'partial_update']: - return super().get_serializer_class() + return AnalysisSerializer elif self.action in ['list', 'retrieve']: - return AnalysisListSerializer + return super().get_serializer_class() elif self.action == 'copy': return AnalysisCopySerializer elif self.action == 'data_files': @@ -292,7 +292,7 @@ def parser_classes(self): else: return api_settings.DEFAULT_PARSER_CLASSES - @swagger_auto_schema(responses={200: AnalysisSerializer}, manual_parameters=[RUN_MODE_PARAM]) + @swagger_auto_schema(responses={200: AnalysisListSerializer}, manual_parameters=[RUN_MODE_PARAM]) @action(methods=['post'], detail=True) def run(self, request, pk=None, version=None): """ @@ -304,9 +304,9 @@ def run(self, request, pk=None, version=None): run_mode_override = request.GET.get('run_mode_override', None) verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to run this model') obj.run(request.user, run_mode_override=run_mode_override) - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) - @swagger_auto_schema(responses={200: AnalysisSerializer}) + @swagger_auto_schema(responses={200: AnalysisListSerializer}) @action(methods=['post'], detail=True) def generate_and_run(self, request, pk=None, version=None): """ @@ -317,9 +317,9 @@ def generate_and_run(self, request, pk=None, version=None): obj = self.get_object() verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to run this model') obj.generate_and_run(request.user) - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) - @swagger_auto_schema(responses={200: AnalysisSerializer}) + @swagger_auto_schema(responses={200: AnalysisListSerializer}) @action(methods=['post'], detail=True) def cancel(self, request, pk=None, version=None): """ @@ -330,9 +330,9 @@ def cancel(self, request, pk=None, version=None): verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to cancel this model') obj.cancel_subtasks() obj.cancel_any() - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) - @swagger_auto_schema(responses={200: AnalysisSerializer}) + @swagger_auto_schema(responses={200: AnalysisListSerializer}) @action(methods=['post'], detail=True) def cancel_analysis_run(self, request, pk=None, version=None): """ @@ -342,9 +342,9 @@ def cancel_analysis_run(self, request, pk=None, version=None): verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to cancel this model') obj.cancel_subtasks() obj.cancel_analysis() - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) - @swagger_auto_schema(responses={200: AnalysisSerializer}, manual_parameters=[RUN_MODE_PARAM]) + @swagger_auto_schema(responses={200: AnalysisListSerializer}, manual_parameters=[RUN_MODE_PARAM]) @action(methods=['post'], detail=True) def generate_inputs(self, request, pk=None, version=None): """ @@ -355,9 +355,9 @@ def generate_inputs(self, request, pk=None, version=None): run_mode_override = request.GET.get('run_mode_override', None) verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to run this model') obj.generate_inputs(request.user, run_mode_override=run_mode_override) - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) - @swagger_auto_schema(responses={200: AnalysisSerializer}) + @swagger_auto_schema(responses={200: AnalysisListSerializer}) @action(methods=['post'], detail=True) def cancel_generate_inputs(self, request, pk=None, version=None): """ @@ -367,7 +367,7 @@ def cancel_generate_inputs(self, request, pk=None, version=None): verify_user_is_in_obj_groups(request.user, obj.model, 'You are not allowed to cancel this model') obj.cancel_subtasks() obj.cancel_generate_inputs() - return Response(AnalysisSerializer(instance=obj, context=self.get_serializer_context()).data) + return Response(AnalysisListSerializer(instance=obj, context=self.get_serializer_context()).data) @action(methods=['post'], detail=True) def copy(self, request, pk=None, version=None): diff --git a/src/server/oasisapi/queues/serializers.py b/src/server/oasisapi/queues/serializers.py index 619590d1a..104ba5a8e 100644 --- a/src/server/oasisapi/queues/serializers.py +++ b/src/server/oasisapi/queues/serializers.py @@ -2,7 +2,7 @@ from rest_framework import serializers from src.server.oasisapi.analysis_models.models import AnalysisModel -from src.server.oasisapi.analysis_models.v2_api.serializers import AnalysisModelSerializer +from src.server.oasisapi.analysis_models.v2_api.serializers import AnalysisModelListSerializer from src.server.oasisapi.analyses.v2_api.serializers import AnalysisSerializerWebSocket, AnalysisTaskStatusSerializer @@ -15,11 +15,11 @@ class QueueSerializer(serializers.Serializer): worker_count = serializers.IntegerField() models = serializers.SerializerMethodField() - @swagger_serializer_method(serializer_or_field=AnalysisModelSerializer(many=True)) + @swagger_serializer_method(serializer_or_field=AnalysisModelListSerializer(many=True)) def get_models(self, instance, *args, **kwargs): queue_name = instance['name'].removesuffix('-v2') models = [m for m in AnalysisModel.objects.all() if str(m) == queue_name] - return AnalysisModelSerializer(instance=models, many=True).data + return AnalysisModelListSerializer(instance=models, many=True).data class WebsocketAnalysesSerializer(serializers.Serializer):