diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index a67673efc..eb8725d40 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -43,6 +43,7 @@ from documents.models import CustomFieldInstance from documents.models import Document from documents.models import DocumentType from documents.models import MatchingModel +from documents.models import Note from documents.models import PaperlessTask from documents.models import SavedView from documents.models import SavedViewFilterRule @@ -861,6 +862,20 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer): ] +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ["id", "username", "first_name", "last_name"] + + +class NotesSerializer(serializers.ModelSerializer): + user = UserSerializer() + + class Meta: + model = Note + fields = ["note", "created", "user"] + + class DocumentSerializer( OwnedObjectSerializer, NestedUpdateMixin, @@ -876,6 +891,8 @@ class DocumentSerializer( created_date = serializers.DateField(required=False) page_count = SerializerMethodField() + notes = NotesSerializer(many=True, required=False) + custom_fields = CustomFieldInstanceSerializer( many=True, allow_null=False, diff --git a/src/documents/tests/test_api_documents.py b/src/documents/tests/test_api_documents.py index 7258b33d3..a0a380e41 100644 --- a/src/documents/tests/test_api_documents.py +++ b/src/documents/tests/test_api_documents.py @@ -2170,8 +2170,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): GIVEN: - A document with a single note WHEN: + - API request for document - API request for document notes is made THEN: + - Note is included in the document response - The associated note is returned """ doc = Document.objects.create( @@ -2185,6 +2187,18 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): user=self.user, ) + response = self.client.get( + f"/api/documents/{doc.pk}/", + format="json", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + resp_data = response.json() + self.assertEqual(len(resp_data["notes"]), 1) + self.assertEqual(resp_data["notes"][0]["note"], note.note) + self.assertEqual(resp_data["notes"][0]["user"]["username"], self.user.username) + response = self.client.get( f"/api/documents/{doc.pk}/notes/", format="json",