améliorer le upload des docs
This commit is contained in:
@@ -3,6 +3,7 @@ pyramid_chameleon
|
|||||||
pyramid_debugtoolbar
|
pyramid_debugtoolbar
|
||||||
pyramid_layout
|
pyramid_layout
|
||||||
pyramid_mailer
|
pyramid_mailer
|
||||||
|
pyramid_storage
|
||||||
pyramid_tm
|
pyramid_tm
|
||||||
SQLAlchemy
|
SQLAlchemy
|
||||||
transaction
|
transaction
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
<metal:block use-macro="main_template">
|
<metal:block use-macro="main_template">
|
||||||
<div metal:fill-slot="content">
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
<div tal:condition="message" tal:content="message" class="alert alert-success" />
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<form action="${url}" method="post" accept-charset="utf-8" enctype="multipart/form-data"
|
<form id="upload_doc-form" action="${url}" method="post" accept-charset="utf-8" enctype="multipart/form-data"
|
||||||
data-fv-framework="bootstrap"
|
data-fv-framework="bootstrap"
|
||||||
data-fv-icon-valid="glyphicon glyphicon-ok"
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||||
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||||
@@ -12,11 +11,7 @@
|
|||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="uploadfile">Séléctionner un fichier</label>
|
<label for="uploadfile">Séléctionner un fichier</label>
|
||||||
<input id="uploadfile" name="filename" type="file" value="" required
|
<input id="uploadfile" name="filename" type="file" value="" required />
|
||||||
data-fv-file___extension="jpeg, jpg,png,pdf,doc"
|
|
||||||
data-fv-file___type="image/jpeg,image/png,application/pdf,application/msword"
|
|
||||||
data-fv-file___max-size="4194304"
|
|
||||||
data-fv-file___message="Le format du fichier sélectionné n'est pas valide" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
|
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
|
||||||
@@ -26,11 +21,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Seuls les documents au format <b>PDF, PNG, JPEG, ou DOC</b> seront acceptés.</li>
|
<li>Seuls les documents au format <b>PDF, PNG, JPG ou JPEG</b> seront acceptés.</li>
|
||||||
<li>La taille de chaque document ne doit <b>pas dépasser 4 Mo</b>.</li>
|
<li>La taille de chaque document ne doit <b>pas dépasser 4 Mo</b>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div> <!-- row -->
|
||||||
|
|
||||||
<h3>Documents déjà téléchargés dans le dossier</h3>
|
<h3>Documents déjà téléchargés dans le dossier</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -269,7 +269,14 @@ def upload_doc(request):
|
|||||||
if 'form.submitted' in request.params:
|
if 'form.submitted' in request.params:
|
||||||
# récupère le fichier lui-même
|
# récupère le fichier lui-même
|
||||||
input_file = request.POST['filename'].file
|
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
|
# récupère le nom du fichier et ajouter le no de dossier
|
||||||
filename = '%s-DD%s-%s' % (societe, nochantier, request.POST['filename'].filename)
|
filename = '%s-DD%s-%s' % (societe, nochantier, request.POST['filename'].filename)
|
||||||
|
|
||||||
@@ -282,17 +289,20 @@ def upload_doc(request):
|
|||||||
with open(temp_file_path, 'wb') as output_file:
|
with open(temp_file_path, 'wb') as output_file:
|
||||||
shutil.copyfileobj(input_file, 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.
|
# Now that we know the file has been fully saved to disk move it into place.
|
||||||
os.rename(temp_file_path, file_path)
|
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())
|
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')
|
||||||
message = 'Le fichier est téléchargé avec succès.'
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': u"Télécharger un document",
|
'page_title': u"Télécharger un document",
|
||||||
'message': message,
|
|
||||||
'url': url,
|
'url': url,
|
||||||
'nodossier': nodossier,
|
'nodossier': nodossier,
|
||||||
'dossier': dossier,
|
'dossier': dossier,
|
||||||
|
|||||||
Reference in New Issue
Block a user