From a79404a153d489bd40dc16a51841fe40c0405f26 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Sat, 2 Feb 2019 11:29:07 +0100 Subject: [PATCH] =?UTF-8?q?am=C3=A9liorer=20le=20upload=20des=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mondumas.egg-info/requires.txt | 1 + mondumas/templates/dossier/upload_doc.pt | 13 ++---- mondumas/views/dossier.py | 50 ++++++++++++++---------- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/mondumas.egg-info/requires.txt b/mondumas.egg-info/requires.txt index fbe21fc..cb5dec3 100644 --- a/mondumas.egg-info/requires.txt +++ b/mondumas.egg-info/requires.txt @@ -3,6 +3,7 @@ pyramid_chameleon pyramid_debugtoolbar pyramid_layout pyramid_mailer +pyramid_storage pyramid_tm SQLAlchemy transaction diff --git a/mondumas/templates/dossier/upload_doc.pt b/mondumas/templates/dossier/upload_doc.pt index 9fb888a..70ef7c0 100644 --- a/mondumas/templates/dossier/upload_doc.pt +++ b/mondumas/templates/dossier/upload_doc.pt @@ -1,10 +1,9 @@
- +

Documents déjà téléchargés dans le dossier

    diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index ca4662d..a6b3cb6 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -269,30 +269,40 @@ def upload_doc(request): if 'form.submitted' in request.params: # récupère le fichier lui-même input_file = request.POST['filename'].file + input_name = request.POST['filename'].filename # récupère son nom + input_ext = input_name.split('.')[-1] # récupère son extension + + # controler l'extension + ext_allowed = ['jpeg','jpg','png','pdf'] + if input_ext.lower() not in ext_allowed : + request.session.flash("Le format de ce fichier n'est pas valide. Téléchargement impossible.", 'warning') + else: + # récupère le nom du fichier et ajouter le no de dossier + filename = '%s-DD%s-%s' % (societe, nochantier, request.POST['filename'].filename) + + file_path = os.path.join('%s/%s' % (request.registry.settings['mondumas.devfac_dir'],societe), filename) + # We first write to a temporary file to prevent incomplete files + temp_file_path = file_path + '~' - # récupère le nom du fichier et ajouter le no de dossier - filename = '%s-DD%s-%s' % (societe, nochantier, request.POST['filename'].filename) - - file_path = os.path.join('%s/%s' % (request.registry.settings['mondumas.devfac_dir'],societe), filename) - # We first write to a temporary file to prevent incomplete files - temp_file_path = file_path + '~' - - # Finally write the data to a temporary file - input_file.seek(0) - with open(temp_file_path, 'wb') as output_file: - shutil.copyfileobj(input_file, output_file) - - # Now that we know the file has been fully saved to disk move it into place. - os.rename(temp_file_path, file_path) - filesize = round(os.path.getsize(file_path) / 1024) - - insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in.upper()) - - message = 'Le fichier est téléchargé avec succès.' + # Finally write the data to a temporary file + input_file.seek(0) + with open(temp_file_path, 'wb') as output_file: + shutil.copyfileobj(input_file, output_file) + + # controler la taille du fichier < 4 Mo + filesize = round(os.path.getsize(temp_file_path) / 1024) + if filesize > 4096 : + os.remove(temp_file_path) + request.session.flash("La taille de ce fichier dépasse la limite autorisée. Téléchargement impossible.", 'warning') + else: + # Now that we know the file has been fully saved to disk move it into place. + os.rename(temp_file_path, file_path) + + insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in.upper()) + request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success') return { 'page_title': u"Télécharger un document", - 'message': message, 'url': url, 'nodossier': nodossier, 'dossier': dossier,