ajout de rdf_view.pt + upload_img.pt
This commit is contained in:
@@ -23,7 +23,7 @@ sqlalchemy.url = mysql://phuoc:phuoc!@localhost/bddevfac?charset=utf8
|
|||||||
# sqlalchemy.url = mysql://root:cni/@srvbd/bddevfac?charset=utf8
|
# sqlalchemy.url = mysql://root:cni/@srvbd/bddevfac?charset=utf8
|
||||||
|
|
||||||
mondumas.admin_email = ctphuoc@bbox.fr
|
mondumas.admin_email = ctphuoc@bbox.fr
|
||||||
mondumas.devfac_url = mondumas:static/img/DEVFAC14/
|
mondumas.devfac_url = mondumas:static/img/DEVFAC/
|
||||||
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
|
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
|
||||||
|
|
||||||
# Mailer configuration
|
# Mailer configuration
|
||||||
|
|||||||
@@ -136,15 +136,23 @@ def get_devis_lig_by_no(request,nodossier):
|
|||||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_docs_attaches(request, nomrep, nodossier):
|
def get_docs_attaches(request, nodossier):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
nochantier = int(nodossier[3:])
|
nochantier = int(nodossier[3:])
|
||||||
|
|
||||||
query = "SELECT * FROM dossier_attaches WHERE nomrep = :nomrep AND societe = :societe AND nochantier = :nochantier ORDER BY cree_le;"
|
query = "SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier ORDER BY cree_le;"
|
||||||
results = request.dbsession.execute(query, {'nomrep': nomrep, 'societe': societe, 'nochantier': nochantier}).fetchall()
|
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).fetchall()
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def get_photos(request, nochantier, norapport):
|
||||||
|
|
||||||
|
query = "SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = 'PL' AND nochantier = :nochantier AND nodossier = :norapport ORDER BY cree_le;"
|
||||||
|
results = request.dbsession.execute(query, {'nochantier': nochantier, 'norapport': norapport}).fetchall()
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
def update_dossier(request, nodossier, new_values):
|
def update_dossier(request, nodossier, new_values):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
nochantier = int(nodossier[3:])
|
nochantier = int(nodossier[3:])
|
||||||
@@ -160,14 +168,14 @@ def update_dossier(request, nodossier, new_values):
|
|||||||
query = "UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
|
query = "UPDATE dem_devis SET %s WHERE societe=:societe AND no_id=:nochantier" % s
|
||||||
execute_query(request, query, new_values)
|
execute_query(request, query, new_values)
|
||||||
|
|
||||||
def insert_dossier_attaches(request, nodossier, filename, filesize, user):
|
def insert_dossier_attaches(request, nodossier, norapport, filename, filesize, user):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
nochantier = int(nodossier[3:])
|
nochantier = int(nodossier[3:])
|
||||||
|
|
||||||
# enregistrer dans la table dossier_attaches
|
# enregistrer dans la table dossier_attaches
|
||||||
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nomfichier, taillefichier, cree_le, usermaj)
|
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nodossier, nomfichier, taillefichier, cree_le, usermaj)
|
||||||
VALUES('DOCS_ATTACHES',:societe,:nochantier,:filename,:filesize,NOW(),:user);"""
|
VALUES('DOCS_ATTACHES',:societe,:nochantier,:norapport,:filename,:filesize,NOW(),:user);"""
|
||||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'filename': filename, 'filesize': filesize, 'user': user})
|
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'filename': filename, 'filesize': filesize, 'user': user})
|
||||||
|
|
||||||
def get_rapport_by_no(request,nodossier,date_inter):
|
def get_rapport_by_no(request,nodossier,date_inter):
|
||||||
societe = nodossier[0:2]
|
societe = nodossier[0:2]
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ def includeme(config):
|
|||||||
config.add_route('rdf_view','/rdf_view/{no_id}')
|
config.add_route('rdf_view','/rdf_view/{no_id}')
|
||||||
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
||||||
config.add_route('upload_doc', '/upload_doc/{nodossier}')
|
config.add_route('upload_doc', '/upload_doc/{nodossier}')
|
||||||
config.add_route('upload_img', '/upload_img/{nodossier}')
|
config.add_route('upload_img', '/upload_img/{norapport}')
|
||||||
# parametres
|
# parametres
|
||||||
config.add_route('parametres', '/parametres')
|
config.add_route('parametres', '/parametres')
|
||||||
config.add_route('connecter_a', '/connecter_a/{login}')
|
config.add_route('connecter_a', '/connecter_a/{login}')
|
||||||
|
|||||||
@@ -256,9 +256,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
||||||
<span class="glyphicon glyphicon-picture" tal:condition="detail.nomfichier[-3:]=='jpg'"></span>
|
<span class="glyphicon glyphicon-picture" tal:condition="detail.nomfichier[-3:]=='jpg'"></span>
|
||||||
<a href="${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier}"
|
<a href="${docs_url}${detail.nomrep}/${detail.societe}/${detail.nochantier}/${detail.nomfichier}"
|
||||||
target="popup"
|
target="popup"
|
||||||
onclick="window.open('${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier},'popup','width=900,height=768'); return false;">
|
onclick="window.open('${docs_url}${detail.nomrep}/${detail.societe}/${detail.nochantier}/${detail.nomfichier},'popup','width=900,height=768'); return false;">
|
||||||
${detail.nomfichier}
|
${detail.nomfichier}
|
||||||
</a>
|
</a>
|
||||||
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
||||||
|
|||||||
@@ -249,10 +249,16 @@
|
|||||||
<br />
|
<br />
|
||||||
<h4 class="text-center text-primary">PHOTOS</h4>
|
<h4 class="text-center text-primary">PHOTOS</h4>
|
||||||
<p>
|
<p>
|
||||||
<a href="${request.application_url}/upload_img/${nodossier}" class="btn btn-success" role="button">
|
<a href="${request.application_url}/upload_img/${norapport}" class="btn btn-success" role="button">
|
||||||
<span class="glyphicon glyphicon-cloud-upload"></span> Ajouter une photo</a>
|
<span class="glyphicon glyphicon-cloud-upload"></span> Ajouter une photo</a>
|
||||||
</p>
|
</p>
|
||||||
|
<div class="fotorama" data-nav="thumbs">
|
||||||
|
<div tal:repeat="detail photos">
|
||||||
|
<img src="${docs_url}${detail.nomrep}/${detail.societe}/${nochantier}/${norapport}/${detail.nomfichier}"
|
||||||
|
data-caption="${detail.nomfichier}" align="center" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
<h4 class="text-center text-primary">CONCLUSIONS</h4>
|
<h4 class="text-center text-primary">CONCLUSIONS</h4>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<br /> ${rapport.conclusions}
|
<br /> ${rapport.conclusions}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</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)}">
|
||||||
<span class="glyphicon glyphicon-arrow-left"></span> Retiur au dossier</a>
|
<span class="glyphicon glyphicon-arrow-left"></span> Retour au dossier</a>
|
||||||
<button id="uploadButton" class="btn btn-primary" type="submit" name="form.submitted">
|
<button id="uploadButton" class="btn btn-primary" type="submit" name="form.submitted">
|
||||||
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -33,9 +33,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
||||||
<span class="glyphicon glyphicon-picture" tal:condition="detail.nomfichier[-3:]=='jpg'"></span>
|
<span class="glyphicon glyphicon-picture" tal:condition="detail.nomfichier[-3:]=='jpg'"></span>
|
||||||
<a href="${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier}"
|
<a href="${docs_url}${detail.nomrep}/${detail.societe}/${detail.nochantier}/${detail.nomfichier}"
|
||||||
target="popup"
|
target="popup"
|
||||||
onclick="window.open('${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier},'popup','width=900,height=768'); return false;">
|
onclick="window.open('${docs_url}${detail.nomrep}/${detail.societe}/${detail.nochantier}/${detail.nomfichier},'popup','width=900,height=768'); return false;">
|
||||||
${detail.nomfichier}
|
${detail.nomfichier}
|
||||||
</a>
|
</a>
|
||||||
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
||||||
|
|||||||
@@ -14,41 +14,37 @@
|
|||||||
<input id="uploadfile" name="filename" type="file" value="" required />
|
<input id="uploadfile" name="filename" type="file" value="" required />
|
||||||
</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('rdf_view', no_id=norapport)}">
|
||||||
<span class="glyphicon glyphicon-arrow-left"></span> Retiur au dossier</a>
|
<span class="glyphicon glyphicon-arrow-left"></span> Retour au rapport</a>
|
||||||
<button id="uploadButton" class="btn btn-primary" type="submit" name="form.submitted">
|
<button id="uploadButton" class="btn btn-primary" type="submit" name="form.submitted">
|
||||||
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<ul>
|
</div> <!-- row -->
|
||||||
<li>Seuls les documents au format <b>PDF, PNG, JPG ou JPEG</b> seront acceptés.</li>
|
<div class="row">
|
||||||
<li>La taille de chaque document ne doit <b>pas dépasser 4 Mo</b>.</li>
|
<ul>
|
||||||
</ul>
|
<li>Seuls les documents au format <b>PNG, JPG ou JPEG</b> seront acceptés.</li>
|
||||||
|
<li>La taille de chaque document ne doit <b>pas dépasser 2 Mo</b>.</li>
|
||||||
|
</ul>
|
||||||
</div> <!-- row -->
|
</div> <!-- row -->
|
||||||
|
|
||||||
<h3>Documents déjà téléchargés dans le dossier</h3>
|
<h3>Photos déjà téléchargées</h3>
|
||||||
<ul>
|
<div class="fotorama" data-nav="thumbs">
|
||||||
<div tal:repeat="detail docs_attaches">
|
<div tal:repeat="detail photos">
|
||||||
<li>
|
<img src="${docs_url}${detail.nomrep}/${detail.societe}/${nochantier}/${norapport}/${detail.nomfichier}"
|
||||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
data-caption="${detail.nomfichier}" align="center" />
|
||||||
<span class="glyphicon glyphicon-picture" tal:condition="detail.nomfichier[-3:]=='jpg'"></span>
|
|
||||||
<a href="${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier}"
|
|
||||||
target="popup"
|
|
||||||
onclick="window.open('${docs_url}${detail.nomrep}/${detail.societe}/${detail.nomfichier},'popup','width=900,height=768'); return false;">
|
|
||||||
${detail.nomfichier}
|
|
||||||
</a>
|
|
||||||
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
|
||||||
</li>
|
|
||||||
</div>
|
</div>
|
||||||
</ul>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$('#uploadButton').on('click', function(){
|
$('#uploadButton').on('click', function(){
|
||||||
$('i.gly-spin').removeClass('gly-spin');
|
$('i.gly-spin').removeClass('gly-spin');
|
||||||
$('i').addClass('gly-spin');
|
$('i').addClass('gly-spin');
|
||||||
});
|
});
|
||||||
</script>
|
$(function () {
|
||||||
|
$('.fotorama').fotorama();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|||||||
@@ -42,6 +42,9 @@
|
|||||||
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/language/fr_FR.js')}" type="text/javascript"></script>
|
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/language/fr_FR.js')}" type="text/javascript"></script>
|
||||||
<!-- JSignature plugin -->
|
<!-- JSignature plugin -->
|
||||||
<script src="${request.static_url('mondumas:static/dist/jSignature/libs/jSignature.min.js')}"></script>
|
<script src="${request.static_url('mondumas:static/dist/jSignature/libs/jSignature.min.js')}"></script>
|
||||||
|
<!-- fotorama.css & fotorama.js. -->
|
||||||
|
<link href="http://cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.4/fotorama.css" rel="stylesheet"> <!-- 3 KB -->
|
||||||
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.4/fotorama.js"></script> <!-- 16 KB -->
|
||||||
|
|
||||||
<!-- Less -->
|
<!-- Less -->
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js" type="text/javascript"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js" type="text/javascript"></script>
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ def dossier_view(request):
|
|||||||
# lire toutes les dossiers similaires
|
# lire toutes les dossiers similaires
|
||||||
similaires = get_similaires_byChantier(request, dossier.societe, dossier.C_NOM, dossier.C_ADR, dossier.C_CP, dossier.C_VILLE)
|
similaires = get_similaires_byChantier(request, dossier.societe, dossier.C_NOM, dossier.C_ADR, dossier.C_CP, dossier.C_VILLE)
|
||||||
# lire tous les documents attachés
|
# lire tous les documents attachés
|
||||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
docs_attaches = get_docs_attaches(request, nodossier)
|
||||||
if nodossier.startswith('PL'):
|
if nodossier.startswith('PL'):
|
||||||
# lire rapport de rdf
|
# lire rapport de rdf
|
||||||
rapports = get_rapport_by_no(request, nodossier, '')
|
rapports = get_rapport_by_no(request, nodossier, '')
|
||||||
@@ -271,7 +271,7 @@ def upload_doc(request):
|
|||||||
return HTTPFound(location=request.route_url("dossier_lookup"))
|
return HTTPFound(location=request.route_url("dossier_lookup"))
|
||||||
|
|
||||||
# lire tous les documents attachés
|
# lire tous les documents attachés
|
||||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
docs_attaches = get_docs_attaches(request, nodossier)
|
||||||
|
|
||||||
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
|
||||||
@@ -288,29 +288,39 @@ def upload_doc(request):
|
|||||||
else:
|
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)
|
||||||
|
# créer le répertoire du chantier s'il n'existe pas encore
|
||||||
|
path = '%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'],societe,nochantier)
|
||||||
|
try:
|
||||||
|
os.mkdir(path)
|
||||||
|
except OSError:
|
||||||
|
pass # ignorer erreor si déjà créé
|
||||||
|
finally:
|
||||||
|
file_path = os.path.join(path, filename)
|
||||||
|
# We first write to a temporary file to prevent incomplete files
|
||||||
|
temp_file_path = file_path + '~'
|
||||||
|
|
||||||
file_path = os.path.join('%s/%s' % (request.registry.settings['mondumas.devfac_dir'],societe), filename)
|
# Finally write the data to a temporary file
|
||||||
# We first write to a temporary file to prevent incomplete files
|
input_file.seek(0)
|
||||||
temp_file_path = file_path + '~'
|
with open(temp_file_path, 'wb') as output_file:
|
||||||
|
shutil.copyfileobj(input_file, output_file)
|
||||||
|
|
||||||
# Finally write the data to a temporary file
|
# controler la taille du fichier < 2 Mo
|
||||||
input_file.seek(0)
|
filesize = round(os.path.getsize(temp_file_path) / 1024)
|
||||||
with open(temp_file_path, 'wb') as output_file:
|
if filesize > 2048 :
|
||||||
shutil.copyfileobj(input_file, output_file)
|
os.remove(temp_file_path)
|
||||||
|
request.session.flash("La taille de ce fichier dépasse la limite autorisée. Téléchargement impossible.", 'warning')
|
||||||
# controler la taille du fichier < 4 Mo
|
else:
|
||||||
filesize = round(os.path.getsize(temp_file_path) / 1024)
|
# Now that we know the file has been fully saved to disk move it into place.
|
||||||
if filesize > 4096 :
|
try:
|
||||||
os.remove(temp_file_path)
|
os.rename(temp_file_path, file_path)
|
||||||
request.session.flash("La taille de ce fichier dépasse la limite autorisée. Téléchargement impossible.", 'warning')
|
except OSError:
|
||||||
else:
|
os.remove(temp_file_path)
|
||||||
# Now that we know the file has been fully saved to disk move it into place.
|
request.session.flash('%s : Ce fichier existe déjà dans le rapport.' % input_name, 'danger')
|
||||||
os.rename(temp_file_path, file_path)
|
else:
|
||||||
|
insert_dossier_attaches(request, nodossier, 0, filename, '%s Ko' % str(filesize), logged_in)
|
||||||
insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in)
|
request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
|
||||||
request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
|
# lire tous les documents attachés
|
||||||
# lire tous les documents attachés
|
docs_attaches = get_docs_attaches(request, nodossier)
|
||||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': u"Télécharger un document",
|
'page_title': u"Télécharger un document",
|
||||||
@@ -324,20 +334,20 @@ def upload_doc(request):
|
|||||||
@view_config(route_name='upload_img', renderer='../templates/dossier/upload_img.pt', permission='view')
|
@view_config(route_name='upload_img', renderer='../templates/dossier/upload_img.pt', permission='view')
|
||||||
def upload_img(request):
|
def upload_img(request):
|
||||||
logged_in = request.authenticated_userid.upper()
|
logged_in = request.authenticated_userid.upper()
|
||||||
nodossier = request.matchdict['nodossier']
|
norapport = request.matchdict['norapport']
|
||||||
societe = nodossier[0:2]
|
|
||||||
nochantier = nodossier[3:]
|
|
||||||
|
|
||||||
url = request.route_url("upload_img", nodossier=nodossier)
|
url = request.route_url("upload_img", norapport=norapport)
|
||||||
message = ""
|
message = ""
|
||||||
|
|
||||||
dossier = get_dossier_by_no(request, nodossier)
|
rapport = get_rapport_by_no_id(request, norapport)
|
||||||
if dossier is None:
|
if rapport is None:
|
||||||
request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger')
|
request.session.flash(u"Le rapport no %s est introuvable" % (norapport), 'danger')
|
||||||
return HTTPFound(location=request.route_url("dossier_lookup"))
|
return HTTPFound(location=request.route_url("rdf_list"))
|
||||||
|
|
||||||
# lire tous les documents attachés
|
societe = rapport.societe
|
||||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
nochantier = rapport.nochantier
|
||||||
|
# lire tous les photos attachées
|
||||||
|
photos = get_photos(request, nochantier, norapport)
|
||||||
|
|
||||||
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
|
||||||
@@ -348,42 +358,54 @@ def upload_img(request):
|
|||||||
input_ext = input_name.split('.')[-1]
|
input_ext = input_name.split('.')[-1]
|
||||||
|
|
||||||
# controler l'extension
|
# controler l'extension
|
||||||
ext_allowed = ['jpeg','jpg','png','pdf']
|
ext_allowed = ['jpeg','jpg','png']
|
||||||
if input_ext.lower() not in ext_allowed :
|
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')
|
request.session.flash("Le format de ce fichier n'est pas valide. Téléchargement impossible.", 'warning')
|
||||||
else:
|
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 rapport
|
||||||
filename = '%s-DD%s-%s' % (societe, nochantier, request.POST['filename'].filename)
|
filename = '%s-RDF%s-%s' % (societe, norapport, request.POST['filename'].filename)
|
||||||
|
|
||||||
file_path = os.path.join('%s/%s' % (request.registry.settings['mondumas.devfac_dir'],societe), filename)
|
# créer le répertoire du chantier s'il n'existe pas encore
|
||||||
# We first write to a temporary file to prevent incomplete files
|
path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport)
|
||||||
temp_file_path = file_path + '~'
|
try:
|
||||||
|
os.makedirs(path)
|
||||||
|
except OSError:
|
||||||
|
pass # ignorer erreor si déjà créé
|
||||||
|
finally:
|
||||||
|
file_path = os.path.join('%s/%s' % (path, 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
|
# Finally write the data to a temporary file
|
||||||
input_file.seek(0)
|
input_file.seek(0)
|
||||||
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
|
# controler la taille du fichier < 2 Mo
|
||||||
filesize = round(os.path.getsize(temp_file_path) / 1024)
|
filesize = round(os.path.getsize(temp_file_path) / 1024)
|
||||||
if filesize > 4096 :
|
if filesize > 2048 :
|
||||||
os.remove(temp_file_path)
|
os.remove(temp_file_path)
|
||||||
request.session.flash("La taille de ce fichier dépasse la limite autorisée. Téléchargement impossible.", 'warning')
|
request.session.flash("La taille de ce fichier dépasse la limite autorisée. Téléchargement impossible.", 'warning')
|
||||||
else:
|
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)
|
try:
|
||||||
|
os.rename(temp_file_path, file_path)
|
||||||
insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in)
|
except OSError:
|
||||||
request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
|
os.remove(temp_file_path)
|
||||||
# lire tous les documents attachés
|
request.session.flash('%s : Ce fichier existe déjà dans le rapport.' % input_name, 'danger')
|
||||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
else:
|
||||||
|
insert_dossier_attaches(request, 'PL-%s' % nochantier, norapport, filename, '%s Ko' % str(filesize), logged_in)
|
||||||
|
request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
|
||||||
|
# lire tous les photos attachées
|
||||||
|
photos = get_photos(request, nochantier, norapport)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': u"Télécharger une photo",
|
'page_title': u"Télécharger une photo",
|
||||||
'url': url,
|
'url': url,
|
||||||
'nodossier': nodossier,
|
'nochantier': nochantier,
|
||||||
'dossier': dossier,
|
'norapport': norapport,
|
||||||
'docs_attaches': docs_attaches,
|
'rapport': rapport,
|
||||||
|
'photos': photos,
|
||||||
'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']),
|
'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,18 +536,25 @@ def rdf_list(request):
|
|||||||
@view_config(route_name='rdf_view', renderer='../templates/dossier/rdf_view.pt', permission='view')
|
@view_config(route_name='rdf_view', renderer='../templates/dossier/rdf_view.pt', permission='view')
|
||||||
def rdf_view(request):
|
def rdf_view(request):
|
||||||
logged_in = request.authenticated_userid.upper()
|
logged_in = request.authenticated_userid.upper()
|
||||||
no_id = request.matchdict['no_id']
|
norapport = request.matchdict['no_id']
|
||||||
|
url = request.route_url('rdf_view', no_id=norapport)
|
||||||
|
|
||||||
# lire le rapport
|
# lire le rapport
|
||||||
rapport = get_rapport_by_no_id(request, no_id)
|
rapport = get_rapport_by_no_id(request, norapport)
|
||||||
url = request.route_url('rdf_view', no_id=no_id)
|
|
||||||
nodossier = 'PL-' + str(rapport.nochantier)
|
nodossier = 'PL-' + str(rapport.nochantier)
|
||||||
|
|
||||||
|
# lire tous les photos attachées
|
||||||
|
photos = get_photos(request, rapport.nochantier, norapport)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': "Rapport de RDF : %s du %s" % (nodossier, rapport.date_inter.strftime('%d-%m-%Y')),
|
'page_title': "Dossier %s : Rapport no %s du %s" % (nodossier, norapport, rapport.date_inter.strftime('%d-%m-%Y')),
|
||||||
'url': url,
|
'url': url,
|
||||||
'logged_in': logged_in,
|
'logged_in': logged_in,
|
||||||
'rapport': rapport,
|
'rapport': rapport,
|
||||||
'nodossier': nodossier,
|
'nodossier': nodossier,
|
||||||
|
'nochantier': rapport.nochantier,
|
||||||
|
'norapport': norapport,
|
||||||
|
'photos': photos,
|
||||||
|
'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ sqlalchemy.url = mysql://root:cni/@srvbd/bddevfac?charset=utf8
|
|||||||
sqlalchemy.pool_recycle = 3600
|
sqlalchemy.pool_recycle = 3600
|
||||||
|
|
||||||
mondumas.admin_email = phuoc@caotek.fr
|
mondumas.admin_email = phuoc@caotek.fr
|
||||||
mondumas.devfac_url = mondumas:static/img/DEVFAC14/
|
mondumas.devfac_url = mondumas:static/img/DEVFAC/
|
||||||
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
|
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
|
||||||
|
|
||||||
# Mailer configuration
|
# Mailer configuration
|
||||||
|
|||||||
Reference in New Issue
Block a user