diff --git a/backend/download/serializers.py b/backend/download/serializers.py index f5d89058..80fecba9 100644 --- a/backend/download/serializers.py +++ b/backend/download/serializers.py @@ -51,6 +51,16 @@ class DownloadListQuerySerializer( page = serializers.IntegerField(required=False) q = serializers.CharField(required=False, help_text="Search Query") error = serializers.BooleanField(required=False, allow_null=True) + sort = serializers.ChoiceField( + choices=["published", "timestamp"], + required=False, + help_text="Sort field", + ) + order = serializers.ChoiceField( + choices=["asc", "desc"], + required=False, + help_text="Sort order", + ) class DownloadListQueueDeleteQuerySerializer(serializers.Serializer): diff --git a/backend/download/views.py b/backend/download/views.py index 7599f05c..9317453f 100644 --- a/backend/download/views.py +++ b/backend/download/views.py @@ -42,20 +42,21 @@ class DownloadApiListView(ApiBaseView): ) def get(self, request): """get download queue list""" - query_filter = request.GET.get("filter", False) + serializer = DownloadListQuerySerializer(data=request.query_params) + serializer.is_valid(raise_exception=True) + validated_data = serializer.validated_data + + sort_field = validated_data.get("sort", "timestamp") + sort_order = validated_data.get("order", "asc") self.data.update( { "sort": [ {"auto_start": {"order": "desc"}}, - {"timestamp": {"order": "asc"}}, + {sort_field: {"order": sort_order}}, ], } ) - serializer = DownloadListQuerySerializer(data=request.query_params) - serializer.is_valid(raise_exception=True) - validated_data = serializer.validated_data - must_list = [] query_filter = validated_data.get("filter") if query_filter: