mirror of
https://github.com/lemeow125/DocManagerBackend.git
synced 2025-04-12 04:51:30 +08:00
Compare commits
3 commits
7a29e0b737
...
0415d99968
Author | SHA1 | Date | |
---|---|---|---|
0415d99968 | |||
c9e6928e8a | |||
9198867346 |
3 changed files with 58 additions and 5 deletions
|
@ -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
|
||||
|
@ -58,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):
|
||||
|
@ -67,12 +68,15 @@ 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):
|
||||
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
|
||||
|
@ -109,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
|
||||
|
|
|
@ -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/<int:pk>/", DocumentRequestUpdateView.as_view()),
|
||||
]
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue