#46 MIME Type check
* adds file mime type check on NewDocumentForm * adds file size check on NewDocumentForm * adds is_xy_valid methods as classmethods on AbstractDocument * adds translations for error messages * updates help text on NewDocumentForm file field
This commit is contained in:
@@ -5,6 +5,7 @@ Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 15.11.21
|
||||
|
||||
"""
|
||||
import mimetypes
|
||||
import os
|
||||
|
||||
from django.db import models
|
||||
@@ -62,6 +63,15 @@ class AbstractDocument(BaseResource):
|
||||
file = models.FileField()
|
||||
comment = models.TextField()
|
||||
|
||||
_accepted_mime_types = {
|
||||
mimetypes.types_map[".pdf"],
|
||||
mimetypes.types_map[".jpg"],
|
||||
mimetypes.types_map[".jpeg"],
|
||||
mimetypes.types_map[".png"],
|
||||
}
|
||||
# _maximum_file_size in MB
|
||||
_maximum_file_size = 15
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
@@ -82,3 +92,12 @@ class AbstractDocument(BaseResource):
|
||||
pass
|
||||
super().delete(using=using, keep_parents=keep_parents)
|
||||
|
||||
@classmethod
|
||||
def is_mime_type_valid(cls, _file: str):
|
||||
mime_type = _file.content_type
|
||||
return mime_type in cls._accepted_mime_types
|
||||
|
||||
@classmethod
|
||||
def is_file_size_valid(cls, _file):
|
||||
max_size = cls._maximum_file_size * pow(1000, 2)
|
||||
return _file.size <= max_size
|
||||
|
||||
Reference in New Issue
Block a user