Skip to content

Commit 586acb9

Browse files
committed
fix: Use serializer when sending input options so that timestamps will appear for task results
1 parent ca0918a commit 586acb9

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

uvdat/core/rest/analytics.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from __future__ import annotations
2+
import inspect
23

34
from django.db.models import QuerySet
45
from rest_framework.decorators import action
56
from rest_framework.response import Response
67
from rest_framework.viewsets import ReadOnlyModelViewSet
8+
from rest_framework.serializers import ModelSerializer
79

810
from uvdat.core.models import Project, TaskResult
911
import uvdat.core.rest.serializers as uvdat_serializers
@@ -34,7 +36,14 @@ def list_types(self, request, project_id: int, **kwargs):
3436
for k, v in instance.get_input_options().items():
3537
if isinstance(v, QuerySet):
3638
filtered_queryset = v.filter_by_projects(Project.objects.filter(id=project_id))
37-
options = [{"id": o.id, "name": o.name} for o in filtered_queryset]
39+
input_serializer = next(iter([
40+
s for _, s in inspect.getmembers(uvdat_serializers, inspect.isclass)
41+
if issubclass(s, ModelSerializer) and s.Meta.model == filtered_queryset.model
42+
]), None)
43+
if input_serializer is not None:
44+
options = [input_serializer(o).data for o in filtered_queryset]
45+
else:
46+
options = [{"id": o.id, "name": o.name} for o in filtered_queryset]
3847
elif any(not isinstance(o, dict) for o in v):
3948
options = [{"id": o, "name": o} for o in v]
4049
else:

0 commit comments

Comments
 (0)