mirror of
https://github.com/lemeow125/DocManagerBackend.git
synced 2025-04-20 08:51:31 +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)
|
documents = DocumentRequestUnitCreationSerializer(many=True, required=True)
|
||||||
college = serializers.CharField(max_length=64)
|
college = serializers.CharField(max_length=64)
|
||||||
purpose = serializers.CharField(max_length=512)
|
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:
|
class Meta:
|
||||||
model = DocumentRequest
|
model = DocumentRequest
|
||||||
|
@ -58,8 +59,8 @@ class DocumentRequestUnitSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DocumentRequestUnit
|
model = DocumentRequestUnit
|
||||||
fields = ["document", "copies"]
|
fields = ["id", "document", "copies"]
|
||||||
read_only_fields = ["document", "copies"]
|
read_only_fields = ["id", "document", "copies"]
|
||||||
|
|
||||||
|
|
||||||
class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer):
|
class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer):
|
||||||
|
@ -67,12 +68,15 @@ class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DocumentRequestUnit
|
model = DocumentRequestUnit
|
||||||
fields = ["document", "copies"]
|
fields = ["id", "document", "copies"]
|
||||||
read_only_fields = ["document", "copies"]
|
read_only_fields = ["id", "document", "copies"]
|
||||||
|
|
||||||
|
|
||||||
class DocumentRequestSerializer(serializers.ModelSerializer):
|
class DocumentRequestSerializer(serializers.ModelSerializer):
|
||||||
documents = serializers.SerializerMethodField()
|
documents = serializers.SerializerMethodField()
|
||||||
|
requester = serializers.SlugRelatedField(
|
||||||
|
many=False, slug_field="email", queryset=CustomUser.objects.all(), required=False
|
||||||
|
)
|
||||||
purpose = serializers.CharField(max_length=512)
|
purpose = serializers.CharField(max_length=512)
|
||||||
date_requested = serializers.DateTimeField(
|
date_requested = serializers.DateTimeField(
|
||||||
format="%m-%d-%Y %I:%M %p", read_only=True
|
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
|
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):
|
class DocumentRequestUpdateSerializer(serializers.ModelSerializer):
|
||||||
status = serializers.ChoiceField(
|
status = serializers.ChoiceField(
|
||||||
choices=DocumentRequest.STATUS_CHOICES, required=True
|
choices=DocumentRequest.STATUS_CHOICES, required=True
|
||||||
|
|
|
@ -3,10 +3,12 @@ from .views import (
|
||||||
DocumentRequestCreateView,
|
DocumentRequestCreateView,
|
||||||
DocumentRequestListView,
|
DocumentRequestListView,
|
||||||
DocumentRequestUpdateView,
|
DocumentRequestUpdateView,
|
||||||
|
DocumentRequestFullListView
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("create/", DocumentRequestCreateView.as_view()),
|
path("create/", DocumentRequestCreateView.as_view()),
|
||||||
path("list/", DocumentRequestListView.as_view()),
|
path("list/", DocumentRequestListView.as_view()),
|
||||||
|
path("list/head/", DocumentRequestFullListView.as_view()),
|
||||||
path("update/<int:pk>/", DocumentRequestUpdateView.as_view()),
|
path("update/<int:pk>/", DocumentRequestUpdateView.as_view()),
|
||||||
]
|
]
|
||||||
|
|
|
@ -42,6 +42,19 @@ class DocumentRequestListView(generics.ListAPIView):
|
||||||
return queryset
|
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):
|
class DocumentRequestUpdateView(generics.UpdateAPIView):
|
||||||
"""
|
"""
|
||||||
Used by head approve or deny document requests.
|
Used by head approve or deny document requests.
|
||||||
|
|
Loading…
Add table
Reference in a new issue