Files
oximg/app/upload/utils.py
2025-08-31 00:29:53 +02:00

27 lines
666 B
Python

import magic
from upload.models import AbstractFile
from functools import lru_cache
@lru_cache(maxsize=128)
def get_mimetype_class_map():
mapping = {}
for cls in AbstractFile.__subclasses__():
for mt in getattr(cls, 'allowed_mimetypes', []):
mapping[mt] = cls
return mapping
def get_mimetype(file_obj):
mimetype = magic.from_buffer(file_obj.read(2048), mime=True)
file_obj.seek(0)
return mimetype
def get_upload_class_for_mimetype(mimetype):
mimetype = mimetype.lower().replace('x-', '') # normalisation légère
return get_mimetype_class_map().get(mimetype)
def create_upload(request, file_obj):
pass