Просмотр исходного кода

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
Abhimanyu Saharan 2 лет назад
Родитель
Сommit
53615944c5
2 измененных файлов с 12 добавлено и 2 удалено
  1. 10 0
      netbox/extras/api/serializers.py
  2. 2 2
      netbox/extras/api/views.py

+ 10 - 0
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()

+ 2 - 2
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)