From 53615944c5224ad44fc32bb657cba58d3fcfb4e9 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Sat, 5 Aug 2023 00:53:15 +0530 Subject: [PATCH] Adds standardized list API for scripts and reports (#13382) * adds standardized list API for scripts and reports #13037 * adds standardized list API for scripts and reports #13037 * adds standardized list API for scripts and reports #13037 * adds module name to the display #13037 --- netbox/extras/api/serializers.py | 10 ++++++++++ netbox/extras/api/views.py | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index b429c3e5c..7f1b941b6 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -481,6 +481,11 @@ class ReportSerializer(serializers.Serializer): description = serializers.CharField(max_length=255, required=False) test_methods = serializers.ListField(child=serializers.CharField(max_length=255)) result = NestedJobSerializer() + display = serializers.SerializerMethodField(read_only=True) + + @extend_schema_field(serializers.CharField()) + def get_display(self, obj): + return f'{obj.name} ({obj.module})' class ReportDetailSerializer(ReportSerializer): @@ -518,6 +523,7 @@ class ScriptSerializer(serializers.Serializer): description = serializers.CharField(read_only=True) vars = serializers.SerializerMethodField(read_only=True) result = NestedJobSerializer() + display = serializers.SerializerMethodField(read_only=True) @extend_schema_field(serializers.JSONField(allow_null=True)) def get_vars(self, instance): @@ -525,6 +531,10 @@ class ScriptSerializer(serializers.Serializer): k: v.__class__.__name__ for k, v in instance._get_vars().items() } + @extend_schema_field(serializers.CharField()) + def get_display(self, obj): + return f'{obj.name} ({obj.module})' + class ScriptDetailSerializer(ScriptSerializer): result = JobSerializer() diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index a64e2a34f..cfe76a889 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -243,7 +243,7 @@ class ReportViewSet(ViewSet): 'request': request, }) - return Response(serializer.data) + return Response({'count': len(report_list), 'results': serializer.data}) def retrieve(self, request, pk): """ @@ -343,7 +343,7 @@ class ScriptViewSet(ViewSet): serializer = serializers.ScriptSerializer(script_list, many=True, context={'request': request}) - return Response(serializer.data) + return Response({'count': len(script_list), 'results': serializer.data}) def retrieve(self, request, pk): module, script = self._get_script(pk)