Преглед изворни кода

Fixes #20120: Cast RQ task args & kwargs to strings for serialization (#20166)

Jeremy Stretch пре 5 месеци
родитељ
комит
0c3beec3a2
1 измењених фајлова са 12 додато и 2 уклоњено
  1. 12 2
      netbox/core/api/serializers_/tasks.py

+ 12 - 2
netbox/core/api/serializers_/tasks.py

@@ -18,8 +18,8 @@ class BackgroundTaskSerializer(serializers.Serializer):
     description = serializers.CharField()
     origin = serializers.CharField()
     func_name = serializers.CharField()
-    args = serializers.ListField(child=serializers.CharField())
-    kwargs = serializers.DictField()
+    args = serializers.SerializerMethodField()
+    kwargs = serializers.SerializerMethodField()
     result = serializers.CharField()
     timeout = serializers.IntegerField()
     result_ttl = serializers.IntegerField()
@@ -42,6 +42,16 @@ class BackgroundTaskSerializer(serializers.Serializer):
     is_scheduled = serializers.BooleanField()
     is_stopped = serializers.BooleanField()
 
+    def get_args(self, obj) -> list:
+        return [
+            str(arg) for arg in obj.args
+        ]
+
+    def get_kwargs(self, obj) -> dict:
+        return {
+            key: str(value) for key, value in obj.kwargs.items()
+        }
+
     def get_position(self, obj) -> int:
         return obj.get_position()