#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:
2021-12-09 12:39:04 +01:00
parent 5b70663987
commit ce747255bc
4 changed files with 66 additions and 10 deletions

View File

@@ -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