diff --git a/polynum/request/forms.py b/polynum/request/forms.py index 76c9db4..323707f 100644 --- a/polynum/request/forms.py +++ b/polynum/request/forms.py @@ -89,7 +89,7 @@ class DocumentUploadForm(BaseModelForm): def __init__(self, *args, **kwargs): super(DocumentUploadForm, self).__init__(*args, **kwargs) - self.fields['uploadfile'].label = _(u'Document, en format PDF') + self.fields['uploadfile'].label = _(u'Document') self.fields['uploadfile'].help_text = _(u'Taille maximum autorisée: %s.') % \ filesizeformat(app_settings.MAX_DOCUMENT_SIZE) diff --git a/polynum/request/utils.py b/polynum/request/utils.py index ae5bb9c..7b83877 100644 --- a/polynum/request/utils.py +++ b/polynum/request/utils.py @@ -8,6 +8,8 @@ logger = logging.getLogger(__name__) from pyPdf import PdfFileReader from pyPdf.utils import PyPdfError +import magic + from ..base.models import Request from ..utils import cache_to_django @@ -27,9 +29,13 @@ def check_pdf(filelike): raise ValueError(N_(u"Vous ne pouvez envoyer que des fichiers PDF.")) def fill_document_attributes_from_pdf_file(document, docfile): + if not docfile: + return try: - if docfile: - docfile.open() + docfile.open() + mime_type = magic.from_buffer(docfile.read(), mime=True) + docfile.seek(0) + if mime_type == 'application/pdf': try: pdf_file = PdfFileReader(docfile) except: @@ -43,6 +49,9 @@ def fill_document_attributes_from_pdf_file(document, docfile): titles = filter(None, [pdf_info.title, pdf_info.subject]) document.name = u' - '.join(titles)[:60] document.nb_pages = pdf_file.numPages or 0 + if mime_type == 'image/jpeg': + return + raise ValueError(N_(u"Ce type de fichier n'est pas accepté")) except PyPdfError: raise ValueError(N_(u"Vous ne pouvez envoyer que des fichiers PDF.")) diff --git a/requirements b/requirements index 1afc528..a42df78 100644 --- a/requirements +++ b/requirements @@ -13,3 +13,4 @@ django-ajax-selects==1.2.5 -f https://repos.entrouvert.org/python-entrouvert.git/ python-entrouvert raven +python-magic