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
|
||||
|
||||
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
|
||||
|
||||
# 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()
|
||||
return results
|
||||
|
||||
def get_docs_attaches(request, nomrep, nodossier):
|
||||
def get_docs_attaches(request, nodossier):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
query = "SELECT * FROM dossier_attaches WHERE nomrep = :nomrep AND societe = :societe AND nochantier = :nochantier ORDER BY cree_le;"
|
||||
results = request.dbsession.execute(query, {'nomrep': nomrep, 'societe': societe, 'nochantier': nochantier}).fetchall()
|
||||
query = "SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier ORDER BY cree_le;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).fetchall()
|
||||
|
||||
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):
|
||||
societe = nodossier[0:2]
|
||||
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
|
||||
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]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
# enregistrer dans la table dossier_attaches
|
||||
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nomfichier, taillefichier, cree_le, usermaj)
|
||||
VALUES('DOCS_ATTACHES',:societe,:nochantier,:filename,:filesize,NOW(),:user);"""
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'filename': filename, 'filesize': filesize, 'user': user})
|
||||
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nodossier, nomfichier, taillefichier, cree_le, usermaj)
|
||||
VALUES('DOCS_ATTACHES',:societe,:nochantier,:norapport,:filename,:filesize,NOW(),: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):
|
||||
societe = nodossier[0:2]
|
||||
|
||||
@@ -23,7 +23,7 @@ def includeme(config):
|
||||
config.add_route('rdf_view','/rdf_view/{no_id}')
|
||||
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
||||
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
|
||||
config.add_route('parametres', '/parametres')
|
||||
config.add_route('connecter_a', '/connecter_a/{login}')
|
||||
|
||||
@@ -256,9 +256,9 @@
|
||||
<li>
|
||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></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"
|
||||
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}
|
||||
</a>
|
||||
- crée le ${detail.cree_le.strftime('%d-%m-%Y')} par ${detail.usermaj}
|
||||
|
||||
@@ -249,10 +249,16 @@
|
||||
<br />
|
||||
<h4 class="text-center text-primary">PHOTOS</h4>
|
||||
<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>
|
||||
</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>
|
||||
<div class="form-group">
|
||||
<br /> ${rapport.conclusions}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<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">
|
||||
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
||||
</div>
|
||||
@@ -33,9 +33,9 @@
|
||||
<li>
|
||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></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"
|
||||
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}
|
||||
</a>
|
||||
- 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 />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<a class="btn btn-default" href="${request.route_url('dossier_view', nodossier=nodossier)}">
|
||||
<span class="glyphicon glyphicon-arrow-left"></span> Retiur au dossier</a>
|
||||
<a class="btn btn-default" href="${request.route_url('rdf_view', no_id=norapport)}">
|
||||
<span class="glyphicon glyphicon-arrow-left"></span> Retour au rapport</a>
|
||||
<button id="uploadButton" class="btn btn-primary" type="submit" name="form.submitted">
|
||||
<i class="glyphicon glyphicon-refresh"></i> Télécharger</button>
|
||||
</div>
|
||||
</form>
|
||||
</div> <!-- row -->
|
||||
<div class="row">
|
||||
<ul>
|
||||
<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>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 -->
|
||||
|
||||
<h3>Documents déjà téléchargés dans le dossier</h3>
|
||||
<ul>
|
||||
<div tal:repeat="detail docs_attaches">
|
||||
<li>
|
||||
<span class="glyphicon glyphicon-file" tal:condition="detail.nomfichier[-3:]=='pdf'"></span>
|
||||
<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>
|
||||
<h3>Photos déjà téléchargées</h3>
|
||||
<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>
|
||||
</ul>
|
||||
|
||||
<script type="text/javascript">
|
||||
<script type="text/javascript">
|
||||
$('#uploadButton').on('click', function(){
|
||||
$('i.gly-spin').removeClass('gly-spin');
|
||||
$('i').addClass('gly-spin');
|
||||
});
|
||||
</script>
|
||||
$(function () {
|
||||
$('.fotorama').fotorama();
|
||||
});
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</metal:block>
|
||||
|
||||
@@ -42,6 +42,9 @@
|
||||
<script src="${request.static_url('mondumas:static/dist/formvalidation/js/language/fr_FR.js')}" type="text/javascript"></script>
|
||||
<!-- JSignature plugin -->
|
||||
<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 -->
|
||||
<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
|
||||
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
|
||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
||||
docs_attaches = get_docs_attaches(request, nodossier)
|
||||
if nodossier.startswith('PL'):
|
||||
# lire rapport de rdf
|
||||
rapports = get_rapport_by_no(request, nodossier, '')
|
||||
@@ -271,7 +271,7 @@ def upload_doc(request):
|
||||
return HTTPFound(location=request.route_url("dossier_lookup"))
|
||||
|
||||
# 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:
|
||||
# récupère le fichier lui-même
|
||||
@@ -288,8 +288,14 @@ def upload_doc(request):
|
||||
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)
|
||||
# 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 + '~'
|
||||
|
||||
@@ -298,19 +304,23 @@ def upload_doc(request):
|
||||
with open(temp_file_path, 'wb') as 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)
|
||||
if filesize > 4096 :
|
||||
if filesize > 2048 :
|
||||
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.
|
||||
try:
|
||||
os.rename(temp_file_path, file_path)
|
||||
|
||||
insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in)
|
||||
except OSError:
|
||||
os.remove(temp_file_path)
|
||||
request.session.flash('%s : Ce fichier existe déjà dans le rapport.' % input_name, 'danger')
|
||||
else:
|
||||
insert_dossier_attaches(request, nodossier, 0, 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 documents attachés
|
||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
||||
docs_attaches = get_docs_attaches(request, nodossier)
|
||||
|
||||
return {
|
||||
'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')
|
||||
def upload_img(request):
|
||||
logged_in = request.authenticated_userid.upper()
|
||||
nodossier = request.matchdict['nodossier']
|
||||
societe = nodossier[0:2]
|
||||
nochantier = nodossier[3:]
|
||||
norapport = request.matchdict['norapport']
|
||||
|
||||
url = request.route_url("upload_img", nodossier=nodossier)
|
||||
url = request.route_url("upload_img", norapport=norapport)
|
||||
message = ""
|
||||
|
||||
dossier = get_dossier_by_no(request, nodossier)
|
||||
if dossier is None:
|
||||
request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger')
|
||||
return HTTPFound(location=request.route_url("dossier_lookup"))
|
||||
rapport = get_rapport_by_no_id(request, norapport)
|
||||
if rapport is None:
|
||||
request.session.flash(u"Le rapport no %s est introuvable" % (norapport), 'danger')
|
||||
return HTTPFound(location=request.route_url("rdf_list"))
|
||||
|
||||
# lire tous les documents attachés
|
||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
||||
societe = rapport.societe
|
||||
nochantier = rapport.nochantier
|
||||
# lire tous les photos attachées
|
||||
photos = get_photos(request, nochantier, norapport)
|
||||
|
||||
if 'form.submitted' in request.params:
|
||||
# récupère le fichier lui-même
|
||||
@@ -348,14 +358,21 @@ def upload_img(request):
|
||||
input_ext = input_name.split('.')[-1]
|
||||
|
||||
# controler l'extension
|
||||
ext_allowed = ['jpeg','jpg','png','pdf']
|
||||
ext_allowed = ['jpeg','jpg','png']
|
||||
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)
|
||||
# récupère le nom du fichier et ajouter le no de rapport
|
||||
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
|
||||
path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport)
|
||||
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 + '~'
|
||||
|
||||
@@ -364,26 +381,31 @@ def upload_img(request):
|
||||
with open(temp_file_path, 'wb') as 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)
|
||||
if filesize > 4096 :
|
||||
if filesize > 2048 :
|
||||
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.
|
||||
try:
|
||||
os.rename(temp_file_path, file_path)
|
||||
|
||||
insert_dossier_attaches(request, nodossier, filename, '%s Ko' % str(filesize), logged_in)
|
||||
except OSError:
|
||||
os.remove(temp_file_path)
|
||||
request.session.flash('%s : Ce fichier existe déjà dans le rapport.' % input_name, 'danger')
|
||||
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 documents attachés
|
||||
docs_attaches = get_docs_attaches(request, 'DOCS_ATTACHES', nodossier)
|
||||
# lire tous les photos attachées
|
||||
photos = get_photos(request, nochantier, norapport)
|
||||
|
||||
return {
|
||||
'page_title': u"Télécharger une photo",
|
||||
'url': url,
|
||||
'nodossier': nodossier,
|
||||
'dossier': dossier,
|
||||
'docs_attaches': docs_attaches,
|
||||
'nochantier': nochantier,
|
||||
'norapport': norapport,
|
||||
'rapport': rapport,
|
||||
'photos': photos,
|
||||
'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')
|
||||
def rdf_view(request):
|
||||
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
|
||||
rapport = get_rapport_by_no_id(request, no_id)
|
||||
url = request.route_url('rdf_view', no_id=no_id)
|
||||
rapport = get_rapport_by_no_id(request, norapport)
|
||||
nodossier = 'PL-' + str(rapport.nochantier)
|
||||
|
||||
# lire tous les photos attachées
|
||||
photos = get_photos(request, rapport.nochantier, norapport)
|
||||
|
||||
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,
|
||||
'logged_in': logged_in,
|
||||
'rapport': rapport,
|
||||
'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
|
||||
|
||||
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
|
||||
|
||||
# Mailer configuration
|
||||
|
||||
Reference in New Issue
Block a user