From 91be4f5a219c9bc22617efc3f9103ae2255b27f6 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Wed, 17 Jul 2024 09:10:05 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=94(backend)=20add=20document=20versio?= =?UTF-8?q?n=20serializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add document version serializer to get the pagination with the document version list. --- src/backend/core/api/serializers.py | 9 +++++++++ src/backend/core/api/viewsets.py | 13 +++++++++++-- .../core/tests/test_api_document_versions.py | 8 ++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 069c6c24..540a55f8 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -259,3 +259,12 @@ class InvitationSerializer(serializers.ModelSerializer): attrs["document_id"] = document_id attrs["issuer"] = user return attrs + + +class DocumentVersionSerializer(serializers.Serializer): + """Serialize Versions.""" + + etag = serializers.CharField() + is_latest = serializers.BooleanField() + last_modified = serializers.DateTimeField() + version_id = serializers.CharField() diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index c07b227b..3af432c1 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -337,10 +337,18 @@ class DocumentViewSet( Q(user=request.user) | Q(team__in=request.user.get_teams()), ) ) - return drf_response.Response( - document.get_versions_slice(from_datetime=from_datetime) + + versions_data = document.get_versions_slice(from_datetime=from_datetime)[ + "versions" + ] + paginator = pagination.PageNumberPagination() + paginated_versions = paginator.paginate_queryset(versions_data, request) + serialized_versions = serializers.DocumentVersionSerializer( + paginated_versions, many=True ) + return paginator.get_paginated_response(serialized_versions.data) + @decorators.action( detail=True, methods=["get", "delete"], @@ -377,6 +385,7 @@ class DocumentViewSet( { "content": response["Body"].read().decode("utf-8"), "last_modified": response["LastModified"], + "id": version_id, } ) diff --git a/src/backend/core/tests/test_api_document_versions.py b/src/backend/core/tests/test_api_document_versions.py index c5580eb6..d442ce46 100644 --- a/src/backend/core/tests/test_api_document_versions.py +++ b/src/backend/core/tests/test_api_document_versions.py @@ -125,7 +125,8 @@ def test_api_document_versions_list_authenticated_related(via, mock_user_get_tea assert response.status_code == 200 content = response.json() - assert len(content["versions"]) == 0 + assert len(content["results"]) == 0 + assert content["count"] == 0 # Add a new version to the document document.content = "new content" @@ -137,9 +138,8 @@ def test_api_document_versions_list_authenticated_related(via, mock_user_get_tea assert response.status_code == 200 content = response.json() - assert len(content["versions"]) == 1 - assert content["next_version_id_marker"] == "" - assert content["is_truncated"] is False + assert len(content["results"]) == 1 + assert content["count"] == 1 def test_api_document_versions_retrieve_anonymous_public():