Add max image upload size limit

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-05-04 21:14:00 -07:00
parent e6c60ff93c
commit 6ed47f9957
6 changed files with 27 additions and 12 deletions

View File

@@ -3,6 +3,7 @@ from pathlib import Path
from django.db import models
from django.db.models import signals
from django.conf import settings
from django.core.exceptions import ValidationError
from django.core.files.base import ContentFile
from django.dispatch import receiver
from django.urls import reverse
@@ -22,10 +23,7 @@ def image_upload(instance, filename):
if ext not in (".jpg", ".png", ".gif"):
raise Exception("File type invalid")
if instance.op:
return f"{instance.board.url}/{instance.op.id}/{now_sec}{ext}"
else:
return f"{instance.board.url}/{now_sec}{ext}"
return f"{instance.board.url}/{now_sec}{ext}"
def thumbs_upload(instance, filename):
@@ -33,10 +31,7 @@ def thumbs_upload(instance, filename):
now = timezone.now()
now_sec = now.strftime("%s.%f")
ext = Path(filename).suffix.lower()
if instance.op:
return f"{instance.board.url}/{instance.op.id}/{now_sec}{ext}"
else:
return f"{instance.board.url}/{now_sec}t{ext}"
return f"{instance.board.url}/{now_sec}t{ext}"
class Board(models.Model):
@@ -91,7 +86,7 @@ class Post(models.Model):
def save(self, *args, **kwargs):
if self.image:
self.original_image_name = self.image.name
self.original_image_name = Path(self.image.name).parts[-1]
self.__make_thumbnail()
super(Post, self).save(*args, **kwargs)
@@ -134,6 +129,13 @@ class Post(models.Model):
+ f"#p{self.id}"
)
def clean(self):
if self.image and self.image.size > settings.MAX_UPLOAD_SIZE:
raise ValidationError(
"Image supplied is too large. Maximum image size is %(max)s",
params={"max": settings.MAX_UPLOAD_SIZE},
)
@receiver(signals.post_save, sender=Post)
def post_created(sender, instance, created, **kwargs):