Add fix for file uploads with . symbols inside the filename

This commit is contained in:
Keannu Bernasol 2024-12-04 02:51:57 +08:00
parent e0eba6ca21
commit 7584f09b62
3 changed files with 25 additions and 14 deletions

View file

@ -37,6 +37,7 @@ class PDFHandler(FileSystemEventHandler):
def process_pdf(self, file_path):
try:
filename = os.path.basename(file_path)
filename = str(filename).replace(" ", "")
metadata = ""
document_type = ""
@ -65,10 +66,7 @@ class PDFHandler(FileSystemEventHandler):
if line.strip():
document_type = line.strip().lower()
break
if (
not document_type
or document_type not in Document.DOCUMENT_TYPE_CHOICES
):
if not document_type:
document_type = "other"
metadata += text
@ -84,9 +82,11 @@ class PDFHandler(FileSystemEventHandler):
)
if created:
DOCUMENT.file.save(name=filename, content=File(open(file_path, "rb")))
DOCUMENT.file.save(
name=filename, content=File(open(file_path, "rb")))
self.logger.info(
f"Document '{filename}' created successfully with type '{document_type}'."
f"Document '{filename}' created successfully with type '{
document_type}'."
)
else:

View file

@ -6,20 +6,14 @@ import uuid
class Document(models.Model):
name = models.CharField(max_length=100)
DOCUMENT_TYPE_CHOICES = (
("memorandum", "Memorandum"),
("hoa", "HOA"),
("documented procedures manual", "Documented Procedures Manual"),
("other", "Other"),
)
document_type = models.CharField(
max_length=32, choices=DOCUMENT_TYPE_CHOICES, null=False, blank=False
max_length=32, null=False, blank=False
)
number_pages = models.IntegerField(null=False, blank=False)
ocr_metadata = models.TextField(null=True, blank=True)
def upload_to(instance, filename):
_, extension = filename.split(".")
_, extension = filename.rsplit(".", 1)
return "documents/%s_%s.%s" % (now(), str(uuid.uuid4()), extension)
file = models.FileField(upload_to=upload_to)

View file

@ -2,11 +2,28 @@ from rest_framework import serializers
from .models import Document
class DocumentUpdateSerializer(serializers.ModelSerializer):
# For Head to edit document info
file = serializers.FileField(required=False)
class Meta:
model = Document
fields = [
"name",
"file",
"document_type",
"number_pages",
"date_uploaded",
]
read_only_fields = ["id"]
class DocumentUploadSerializer(serializers.ModelSerializer):
# For staff document uploads
date_uploaded = serializers.DateTimeField(
format="%m-%d-%Y %I:%M %p", read_only=True
)
file = serializers.FileField()
class Meta:
model = Document