mirror of
https://github.com/lemeow125/DocManagerBackend.git
synced 2025-04-27 18:21:23 +08:00
Finish up questionnaire app
This commit is contained in:
parent
8bd8df9042
commit
b0a9b6b6f0
13 changed files with 558 additions and 25 deletions
|
@ -0,0 +1,22 @@
|
|||
# Generated by Django 5.1.3 on 2024-11-24 02:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("document_requests", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="documentrequest",
|
||||
name="type",
|
||||
field=models.CharField(
|
||||
choices=[("softcopy", "Softcopy"), ("hardcopy", "Hardcopy")],
|
||||
default="softcopy",
|
||||
max_length=16,
|
||||
),
|
||||
),
|
||||
]
|
|
@ -25,4 +25,9 @@ class DocumentRequest(models.Model):
|
|||
|
||||
status = models.CharField(max_length=32, choices=STATUS_CHOICES, default="pending")
|
||||
|
||||
# TODO: Add request type (Softcopy/Hardcopy)
|
||||
TYPE_CHOICES = (
|
||||
("softcopy", "Softcopy"),
|
||||
("hardcopy", "Hardcopy"),
|
||||
)
|
||||
|
||||
type = models.CharField(max_length=16, choices=TYPE_CHOICES, default="softcopy")
|
||||
|
|
|
@ -10,6 +10,7 @@ class DocumentRequestUnitCreationSerializer(serializers.ModelSerializer):
|
|||
document = serializers.SlugRelatedField(
|
||||
many=False, slug_field="id", queryset=Document.objects.all(), required=True
|
||||
)
|
||||
copies = serializers.IntegerField(min_value=1)
|
||||
|
||||
class Meta:
|
||||
model = DocumentRequestUnit
|
||||
|
@ -21,12 +22,13 @@ class DocumentRequestCreationSerializer(serializers.ModelSerializer):
|
|||
many=False, slug_field="id", queryset=CustomUser.objects.all(), required=False
|
||||
)
|
||||
documents = DocumentRequestUnitCreationSerializer(many=True, required=True)
|
||||
college = serializers.CharField(allow_blank=False)
|
||||
purpose = serializers.CharField(max_length=512, allow_blank=False)
|
||||
college = serializers.CharField(max_length=64)
|
||||
purpose = serializers.CharField(max_length=512)
|
||||
type = serializers.ChoiceField(choices=DocumentRequest.TYPE_CHOICES, required=True)
|
||||
|
||||
class Meta:
|
||||
model = DocumentRequest
|
||||
fields = ["requester", "college", "purpose", "documents"]
|
||||
fields = ["requester", "college", "type", "purpose", "documents"]
|
||||
|
||||
def create(self, validated_data):
|
||||
user = self.context["request"].user
|
||||
|
@ -71,18 +73,30 @@ class DocumentRequestUnitWithFileSerializer(serializers.ModelSerializer):
|
|||
|
||||
class DocumentRequestSerializer(serializers.ModelSerializer):
|
||||
documents = serializers.SerializerMethodField()
|
||||
college = serializers.CharField(allow_blank=False)
|
||||
purpose = serializers.CharField(max_length=512, allow_blank=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",
|
||||
"purpose", "documents", "status"]
|
||||
fields = [
|
||||
"id",
|
||||
"requester",
|
||||
"college",
|
||||
"type",
|
||||
"purpose",
|
||||
"date_requested",
|
||||
"documents",
|
||||
"status",
|
||||
]
|
||||
read_only_fields = [
|
||||
"id",
|
||||
"requester",
|
||||
"college",
|
||||
"type",
|
||||
"purpose",
|
||||
"date_requested",
|
||||
"documents",
|
||||
"status",
|
||||
]
|
||||
|
@ -109,7 +123,7 @@ class DocumentRequestUpdateSerializer(serializers.ModelSerializer):
|
|||
if instance.status == "denied":
|
||||
raise serializers.ValidationError(
|
||||
{
|
||||
"error": "Denied requests cannot be updated. It is advised you create a new request and approve it from there"
|
||||
"error": "Denied requests cannot be updated. You should instead create a new request and approve it from there"
|
||||
}
|
||||
)
|
||||
elif validated_data["status"] == instance.status:
|
||||
|
@ -120,10 +134,12 @@ class DocumentRequestUpdateSerializer(serializers.ModelSerializer):
|
|||
representation = super().update(instance, validated_data)
|
||||
|
||||
# Send an email on request status update
|
||||
email = RequestUpdateEmail()
|
||||
email.context = {
|
||||
"request_status": instance.status
|
||||
}
|
||||
email.send(to=[instance.requester.email])
|
||||
try:
|
||||
email = RequestUpdateEmail()
|
||||
email.context = {"request_status": instance.status}
|
||||
email.send(to=[instance.requester.email])
|
||||
except:
|
||||
# Silence out errors if email sending fails
|
||||
pass
|
||||
|
||||
return representation
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue