1
0
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:
Jeremy Stretch
2019-10-29 16:17:59 -04:00
parent 1cfb8aea23
commit 93d28e6a72
2 changed files with 24 additions and 5 deletions

View File

@ -230,6 +230,22 @@ class ScriptInputSerializer(serializers.Serializer):
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
#

View File

@ -262,13 +262,16 @@ class ScriptViewSet(ViewSet):
Run a Script identified as "<module>.<script>".
"""
script = self._get_script(pk)()
serializer = serializers.ScriptInputSerializer(data=request.data)
input_serializer = serializers.ScriptInputSerializer(data=request.data)
if serializer.is_valid():
script.run(serializer.data['data'])
return Response(script.log)
if input_serializer.is_valid():
output = script.run(input_serializer.data['data'])
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)
#