From 919886734656ffbc29615915b084220aa2021abc Mon Sep 17 00:00:00 2001 From: Keannu Bernasol Date: Sun, 24 Nov 2024 23:53:44 +0800 Subject: [PATCH 1/3] Return email instead of id in document_requests list view --- docmanager_backend/document_requests/serializers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docmanager_backend/document_requests/serializers.py b/docmanager_backend/document_requests/serializers.py index 396629a..c6cd5f2 100644 --- a/docmanager_backend/document_requests/serializers.py +++ b/docmanager_backend/document_requests/serializers.py @@ -24,7 +24,8 @@ class DocumentRequestCreationSerializer(serializers.ModelSerializer): documents = DocumentRequestUnitCreationSerializer(many=True, required=True) college = serializers.CharField(max_length=64) purpose = serializers.CharField(max_length=512) - type = serializers.ChoiceField(choices=DocumentRequest.TYPE_CHOICES, required=True) + type = serializers.ChoiceField( + choices=DocumentRequest.TYPE_CHOICES, required=True) class Meta: model = DocumentRequest @@ -73,6 +74,9 @@ class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer): class DocumentRequestSerializer(serializers.ModelSerializer): documents = serializers.SerializerMethodField() + requester = serializers.SlugRelatedField( + many=False, slug_field="email", queryset=CustomUser.objects.all(), required=False + ) purpose = serializers.CharField(max_length=512) date_requested = serializers.DateTimeField( format="%m-%d-%Y %I:%M %p", read_only=True From c9e6928e8a63a2d6fc57d886e121eca7d8f43105 Mon Sep 17 00:00:00 2001 From: Keannu Bernasol Date: Mon, 25 Nov 2024 00:32:55 +0800 Subject: [PATCH 2/3] Add id to document request unit serializer context --- docmanager_backend/document_requests/serializers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docmanager_backend/document_requests/serializers.py b/docmanager_backend/document_requests/serializers.py index c6cd5f2..3ecd738 100644 --- a/docmanager_backend/document_requests/serializers.py +++ b/docmanager_backend/document_requests/serializers.py @@ -59,8 +59,8 @@ class DocumentRequestUnitSerializer(serializers.ModelSerializer): class Meta: model = DocumentRequestUnit - fields = ["document", "copies"] - read_only_fields = ["document", "copies"] + fields = ["id", "document", "copies"] + read_only_fields = ["id", "document", "copies"] class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer): @@ -68,8 +68,8 @@ class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer): class Meta: model = DocumentRequestUnit - fields = ["document", "copies"] - read_only_fields = ["document", "copies"] + fields = ["id", "document", "copies"] + read_only_fields = ["id", "document", "copies"] class DocumentRequestSerializer(serializers.ModelSerializer): From 0415d9996803de20378a1c52130efe00cce7320a Mon Sep 17 00:00:00 2001 From: Keannu Bernasol Date: Mon, 25 Nov 2024 02:35:59 +0800 Subject: [PATCH 3/3] Add unrestricted document request view for head --- .../document_requests/serializers.py | 34 +++++++++++++++++++ docmanager_backend/document_requests/urls.py | 2 ++ docmanager_backend/document_requests/views.py | 13 +++++++ 3 files changed, 49 insertions(+) diff --git a/docmanager_backend/document_requests/serializers.py b/docmanager_backend/document_requests/serializers.py index 3ecd738..62f4748 100644 --- a/docmanager_backend/document_requests/serializers.py +++ b/docmanager_backend/document_requests/serializers.py @@ -113,6 +113,40 @@ class DocumentRequestSerializer(serializers.ModelSerializer): return serializer_class(obj.documents, many=True).data +class FullDocumentRequestSerializer(serializers.ModelSerializer): + documents = DocumentRequestUnitWithFileSerializer() + requester = serializers.SlugRelatedField( + many=False, slug_field="email", queryset=CustomUser.objects.all(), required=False + ) + purpose = serializers.CharField(max_length=512) + date_requested = serializers.DateTimeField( + format="%m-%d-%Y %I:%M %p", read_only=True + ) + + class Meta: + model = DocumentRequest + fields = [ + "id", + "requester", + "college", + "type", + "purpose", + "date_requested", + "documents", + "status", + ] + read_only_fields = [ + "id", + "requester", + "college", + "type", + "purpose", + "date_requested", + "documents", + "status", + ] + + class DocumentRequestUpdateSerializer(serializers.ModelSerializer): status = serializers.ChoiceField( choices=DocumentRequest.STATUS_CHOICES, required=True diff --git a/docmanager_backend/document_requests/urls.py b/docmanager_backend/document_requests/urls.py index 15d71f3..75c922d 100644 --- a/docmanager_backend/document_requests/urls.py +++ b/docmanager_backend/document_requests/urls.py @@ -3,10 +3,12 @@ from .views import ( DocumentRequestCreateView, DocumentRequestListView, DocumentRequestUpdateView, + DocumentRequestFullListView ) urlpatterns = [ path("create/", DocumentRequestCreateView.as_view()), path("list/", DocumentRequestListView.as_view()), + path("list/head/", DocumentRequestFullListView.as_view()), path("update//", DocumentRequestUpdateView.as_view()), ] diff --git a/docmanager_backend/document_requests/views.py b/docmanager_backend/document_requests/views.py index 9c496ca..4272030 100644 --- a/docmanager_backend/document_requests/views.py +++ b/docmanager_backend/document_requests/views.py @@ -42,6 +42,19 @@ class DocumentRequestListView(generics.ListAPIView): return queryset +class DocumentRequestFullListView(generics.ListAPIView): + """ + Returns document requests. Always returns the link to download the document. + Head is able to view all document requests here. Staff and clients have no access + """ + + http_method_names = ["get"] + serializer_class = DocumentRequestSerializer + pagination_class = PageNumberPagination + permission_classes = [IsAuthenticated, IsHead] + queryset = DocumentRequest.objects.all() + + class DocumentRequestUpdateView(generics.UpdateAPIView): """ Used by head approve or deny document requests.