mirror of
https://github.com/lemeow125/DocManagerBackend.git
synced 2025-04-27 18:21:23 +08:00
Implement sender LLM OCR and request remarks
This commit is contained in:
parent
d5477a1e1a
commit
674a7ec592
11 changed files with 174 additions and 62 deletions
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 5.1.3 on 2025-01-08 04:29
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("document_requests", "0002_documentrequest_questionnaire"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="documentrequest",
|
||||
name="denied_remarks",
|
||||
field=models.TextField(blank=True, max_length=512, null=True),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 5.1.3 on 2025-01-08 04:51
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("document_requests", "0003_documentrequest_denied_remarks"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="documentrequest",
|
||||
old_name="denied_remarks",
|
||||
new_name="remarks",
|
||||
),
|
||||
]
|
|
@ -27,6 +27,8 @@ class DocumentRequest(models.Model):
|
|||
("denied", "Denied"),
|
||||
)
|
||||
|
||||
remarks = models.TextField(max_length=512, blank=True, null=True)
|
||||
|
||||
status = models.CharField(
|
||||
max_length=32, choices=STATUS_CHOICES, default="pending")
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ class DocumentRequestSerializer(serializers.ModelSerializer):
|
|||
"purpose",
|
||||
"date_requested",
|
||||
"documents",
|
||||
"remarks",
|
||||
"status",
|
||||
]
|
||||
read_only_fields = [
|
||||
|
@ -112,6 +113,7 @@ class DocumentRequestSerializer(serializers.ModelSerializer):
|
|||
"purpose",
|
||||
"date_requested",
|
||||
"documents",
|
||||
"remarks,"
|
||||
"status",
|
||||
]
|
||||
|
||||
|
@ -146,6 +148,7 @@ class FullDocumentRequestSerializer(serializers.ModelSerializer):
|
|||
"purpose",
|
||||
"date_requested",
|
||||
"documents",
|
||||
"remarks",
|
||||
"status",
|
||||
]
|
||||
read_only_fields = [
|
||||
|
@ -167,27 +170,41 @@ class DocumentRequestUpdateSerializer(serializers.ModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = DocumentRequest
|
||||
fields = ["id", "status"]
|
||||
read_only_fields = ["id", "status"]
|
||||
fields = ["id", "status", "remarks"]
|
||||
read_only_fields = ["id"]
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
print(validated_data)
|
||||
if instance.status == "denied" or instance.status == "approved":
|
||||
raise serializers.ValidationError(
|
||||
{
|
||||
"error": "Already approved/denied requests cannot be updated. You should instead create a new request and approve it from there"
|
||||
}
|
||||
)
|
||||
elif "status" not in validated_data:
|
||||
raise serializers.ValidationError(
|
||||
{
|
||||
"error": "No status value update provided"
|
||||
}
|
||||
)
|
||||
elif validated_data["status"] == instance.status:
|
||||
raise serializers.ValidationError(
|
||||
{"error": "Request form status provided is the same as current status"}
|
||||
)
|
||||
|
||||
elif validated_data["status"] == "denied" and "remarks" not in validated_data:
|
||||
raise serializers.ValidationError(
|
||||
{"error": "Request denial requires remarks"}
|
||||
)
|
||||
representation = super().update(instance, validated_data)
|
||||
|
||||
# Send an email on request status update
|
||||
try:
|
||||
email = RequestUpdateEmail()
|
||||
email.context = {"request_status": instance.status}
|
||||
if instance.status == "denied":
|
||||
email.context = {"remarks": instance.remarks}
|
||||
else:
|
||||
email.context = {"remarks": "N/A"}
|
||||
email.send(to=[instance.requester.email])
|
||||
except:
|
||||
# Silence out errors if email sending fails
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue