From 0c3beec3a26e3c3d08900c686e0378649f3a54ea Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 25 Aug 2025 08:57:35 -0400 Subject: [PATCH] Fixes #20120: Cast RQ task args & kwargs to strings for serialization (#20166) --- netbox/core/api/serializers_/tasks.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/netbox/core/api/serializers_/tasks.py b/netbox/core/api/serializers_/tasks.py index 53f2b5126..85fb682c9 100644 --- a/netbox/core/api/serializers_/tasks.py +++ b/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()