mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-24 13:01:56 +00:00
feat(Tasks): PRWLR-4826 add task_args to serializer (#41)
This commit is contained in:
committed by
GitHub
parent
f7645e8f25
commit
1cef6f0db7
@@ -95,6 +95,7 @@ class TaskSerializer(RLSSerializer, TaskBase):
|
||||
state = serializers.SerializerMethodField(read_only=True)
|
||||
metadata = serializers.SerializerMethodField(read_only=True)
|
||||
result = serializers.SerializerMethodField(read_only=True)
|
||||
task_args = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
completed_at = serializers.DateTimeField(
|
||||
source="task_runner_task.date_done", read_only=True
|
||||
@@ -110,6 +111,7 @@ class TaskSerializer(RLSSerializer, TaskBase):
|
||||
"name",
|
||||
"state",
|
||||
"result",
|
||||
"task_args",
|
||||
"metadata",
|
||||
]
|
||||
|
||||
@@ -121,6 +123,17 @@ class TaskSerializer(RLSSerializer, TaskBase):
|
||||
def get_result(self, obj):
|
||||
return self.get_json_field(obj, "result")
|
||||
|
||||
@extend_schema_field(serializers.JSONField())
|
||||
def get_task_args(self, obj):
|
||||
task_args = self.get_json_field(obj, "task_kwargs")
|
||||
# Celery task_kwargs are stored as a double string JSON in the database when not empty
|
||||
if isinstance(task_args, str):
|
||||
task_args = json.loads(task_args.replace("'", '"'))
|
||||
# Remove tenant_id from task_kwargs if present
|
||||
task_args.pop("tenant_id", None)
|
||||
|
||||
return task_args
|
||||
|
||||
@staticmethod
|
||||
def get_json_field(obj, field_name):
|
||||
"""Helper method to DRY the logic for loading JSON fields from task_runner_task."""
|
||||
|
||||
@@ -131,6 +131,7 @@ def tasks_fixture(tenants_fixture):
|
||||
task_runner_task1 = TaskResult.objects.create(
|
||||
task_id="81a1b34b-ff6e-498e-979c-d6a83260167f",
|
||||
task_name="task_runner_task1",
|
||||
task_kwargs='{"kwarg1": "value1"}',
|
||||
status="SUCCESS",
|
||||
)
|
||||
task_runner_task2 = TaskResult.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user