mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Improve script output serialization
This commit is contained in:
@ -230,6 +230,22 @@ class ScriptInputSerializer(serializers.Serializer):
|
|||||||
commit = serializers.BooleanField()
|
commit = serializers.BooleanField()
|
||||||
|
|
||||||
|
|
||||||
|
class ScriptLogMessageSerializer(serializers.Serializer):
|
||||||
|
status = serializers.SerializerMethodField(read_only=True)
|
||||||
|
message = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
def get_status(self, instance):
|
||||||
|
return LOG_LEVEL_CODES.get(instance[0])
|
||||||
|
|
||||||
|
def get_message(self, instance):
|
||||||
|
return instance[1]
|
||||||
|
|
||||||
|
|
||||||
|
class ScriptOutputSerializer(serializers.Serializer):
|
||||||
|
log = ScriptLogMessageSerializer(many=True, read_only=True)
|
||||||
|
output = serializers.CharField(read_only=True)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Change logging
|
# Change logging
|
||||||
#
|
#
|
||||||
|
@ -262,13 +262,16 @@ class ScriptViewSet(ViewSet):
|
|||||||
Run a Script identified as "<module>.<script>".
|
Run a Script identified as "<module>.<script>".
|
||||||
"""
|
"""
|
||||||
script = self._get_script(pk)()
|
script = self._get_script(pk)()
|
||||||
serializer = serializers.ScriptInputSerializer(data=request.data)
|
input_serializer = serializers.ScriptInputSerializer(data=request.data)
|
||||||
|
|
||||||
if serializer.is_valid():
|
if input_serializer.is_valid():
|
||||||
script.run(serializer.data['data'])
|
output = script.run(input_serializer.data['data'])
|
||||||
return Response(script.log)
|
script.output = output
|
||||||
|
output_serializer = serializers.ScriptOutputSerializer(script)
|
||||||
|
|
||||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
return Response(output_serializer.data)
|
||||||
|
|
||||||
|
return Response(input_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Reference in New Issue
Block a user