diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py
index 4bd8fe9..142b202 100644
--- a/mondumas/models/dossier.py
+++ b/mondumas/models/dossier.py
@@ -121,7 +121,7 @@ WHERE societe<>:societe AND C_NOM=:C_NOM AND C_ADR=:C_ADR AND C_CP=:C_CP AND C_V
return results
-def get_docs_attaches(request, nodossier, norapport, nosection, origine, filename):
+def get_docs_attaches(request, nodossier, norapport, origine, filename):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
@@ -134,26 +134,38 @@ def get_docs_attaches(request, nodossier, norapport, nosection, origine, filenam
'norapport': norapport, 'origine': origine, 'filename': filename}).fetchall()
return results
-def get_photos(request, nodossier, norapport, nosection):
+def get_photos(request, nodossier, norapport, origine):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
query = """SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier
- AND nodossier = :norapport AND nosection = :nosection AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;"""
- results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'nosection': nosection}).fetchall()
+ AND nodossier = :norapport AND origine = :origine AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;"""
+ results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine}).fetchall()
return results
-def delete_photos(request, nodossier, norapport, nosection, nomfic):
+def delete_photos(request, nodossier, norapport, origine, nomfic):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
-
# supprimer d'abord le fichier
- file_path = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic)
+ if len(origine) > 1:
+ file_path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, nomfic)
+ else:
+ file_path = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic)
if os.path.exists(file_path):
os.remove(file_path)
- query = "DELETE FROM dossier_attaches WHERE nomrep='DOCS_ATTACHES' AND societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND nosection=:nosection AND nomfichier=:nomfic;"
- execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'nosection': nosection, 'nomfic': nomfic})
-
+ query = "DELETE FROM dossier_attaches WHERE nomrep='DOCS_ATTACHES' AND societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;"
+ execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine, 'nomfic': nomfic})
+
+def rename_photos(request, nodossier, norapport, origine, nomfic, new_nomfic):
+ societe = nodossier[0:2]
+ nochantier = int(nodossier[3:])
+
+ query = """
+ UPDATE dossier_attaches SET nomfichier = :new_nomfic
+ WHERE nomrep='DOCS_ATTACHES' AND societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;
+ """
+ execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport,
+ 'origine': origine, 'nomfic': nomfic, 'new_nomfic': new_nomfic})
def update_dossier(request, nodossier, new_values):
societe = nodossier[0:2]
@@ -183,19 +195,19 @@ def update_dossier_cloture(request, nodossier, logged_in):
query = "UPDATE dem_devis SET mtregl = 0.01, USERMAJ = :logged_in WHERE societe=:societe AND no_id=:nochantier"
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'logged_in': logged_in})
-def insert_dossier_attaches(request, nodossier, norapport, nosection, origine, filename, filesize, user):
+def insert_dossier_attaches(request, nodossier, norapport, origine, filename, filesize, user):
societe = nodossier[0:2]
nochantier = int(nodossier[3:])
# fichier existe ?
- item = get_docs_attaches(request, nodossier, norapport, nosection, origine, filename)
+ item = get_docs_attaches(request, nodossier, norapport, origine, filename)
if item:
return
# enregistrer dans la table dossier_attaches
- query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nodossier, nosection, origine, nomfichier, taillefichier, cree_le, usermaj)
- VALUES('DOCS_ATTACHES',:societe,:nochantier,:norapport,:nosection,:origine,:filename,:filesize,NOW(),:user);"""
+ query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nodossier, origine, nomfichier, taillefichier, cree_le, usermaj)
+ VALUES('DOCS_ATTACHES',:societe,:nochantier,:norapport,:origine,:filename,:filesize,NOW(),:user);"""
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport,
- 'nosection': nosection, 'origine': origine, 'filename': filename, 'filesize': filesize, 'user': user})
+ 'origine': origine, 'filename': filename, 'filesize': filesize, 'user': user})
def get_rapport_by_no(request,nodossier,date_inter):
societe = nodossier[0:2]
diff --git a/mondumas/routes.py b/mondumas/routes.py
index 57c9cfb..582856c 100644
--- a/mondumas/routes.py
+++ b/mondumas/routes.py
@@ -30,7 +30,7 @@ def includeme(config):
# dossier
config.add_route('demandes','/demandes')
config.add_route('demandes_dl','/demandes_dl/{societe}/{email_from}/{email_uid}')
- config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{nosection}/{nomfic}')
+ config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{origine}/{nomfic}')
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
config.add_route('dossier_lookup', '/dossier_lookup')
config.add_route('dossier_select', '/dossier_select/{date}')
@@ -42,9 +42,10 @@ def includeme(config):
config.add_route('rdf_list','/rdf_list')
config.add_route('rdf_rapport','/rdf_rapport/{no_id}')
config.add_route('rdf_view','/rdf_view/{no_id}')
+ config.add_route('rotate_img','/rotate_img/{nodossier}/{norapport}/{origine}/{nomfic}/{angle}')
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
config.add_route('upload_doc', '/upload_doc/{nodossier}/{origine}')
- config.add_route('upload_img', '/upload_img/{norapport}/{nosection}')
+ config.add_route('upload_img', '/upload_img/{norapport}/{origine}')
config.add_route('upload_om', '/upload_om')
# parametres
config.add_route('parametres', '/parametres')
diff --git a/mondumas/static/img/Logo-ME.jpg b/mondumas/static/img/Logo-ME.jpg
index e143bf0..240f4b3 100644
Binary files a/mondumas/static/img/Logo-ME.jpg and b/mondumas/static/img/Logo-ME.jpg differ
diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt
index 6ea1a58..1c0ae82 100644
--- a/mondumas/templates/dossier/dossier_view.pt
+++ b/mondumas/templates/dossier/dossier_view.pt
@@ -221,8 +221,8 @@
Ajouter document
-
- Gérer les photos
+
+ Gérer photos dossiers
@@ -254,6 +254,8 @@
Document technique
+
+ Gérer photos techniques
diff --git a/mondumas/templates/dossier/upload_doc.pt b/mondumas/templates/dossier/upload_doc.pt
index bbabc37..774227d 100644
--- a/mondumas/templates/dossier/upload_doc.pt
+++ b/mondumas/templates/dossier/upload_doc.pt
@@ -10,7 +10,7 @@
-
+
- - Seuls les documents au format PDF, PNG, JPG ou JPEG seront acceptés.
+ - Seuls les documents au format PDF seront acceptés.
- La taille de chaque document ne doit pas dépasser 4 Mo.
diff --git a/mondumas/templates/dossier/upload_img.pt b/mondumas/templates/dossier/upload_img.pt
index 565de66..50f73cf 100644
--- a/mondumas/templates/dossier/upload_img.pt
+++ b/mondumas/templates/dossier/upload_img.pt
@@ -23,7 +23,7 @@
@@ -44,17 +44,58 @@
+
+
+
+
diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py
index 73265b2..2037dd1 100644
--- a/mondumas/views/dossier.py
+++ b/mondumas/views/dossier.py
@@ -115,9 +115,9 @@ 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, nodossier, 0, 0, 'CLT', '')
+ docs_attaches = get_docs_attaches(request, nodossier, 0, 'CLT', '')
# lire tous les documents techniques
- docs_techniques = get_docs_attaches(request, nodossier, 0, 0, 'FRN', '')
+ docs_techniques = get_docs_attaches(request, nodossier, 0, 'FRN', '')
if nodossier.startswith('PL'):
# lire rapport de rdf
rapports = get_rapport_by_no(request, nodossier, '')
@@ -278,7 +278,7 @@ def upload_doc(request):
nodossier = request.matchdict['nodossier']
origine = request.matchdict['origine']
if origine == 'CLT':
- page_title = "Télécharger un document attaché"
+ page_title = "Télécharger un document PDF"
else:
page_title = "Télécharger un document technique"
@@ -294,25 +294,29 @@ def upload_doc(request):
return HTTPFound(location=request.route_url("dossier_lookup"))
# lire tous les documents attachés
- docs_attaches = get_docs_attaches(request, nodossier, 0, 0, origine, '')
+ docs_attaches = get_docs_attaches(request, nodossier, 0, origine, '')
if 'form.submitted' in request.params:
- # récupère le fichier download dans le dossier /tmp
- input_file = request.POST['filename'].file
- input_name = request.POST['filename'].filename
- ext_allowed = ['jpeg','jpg','png','pdf']
- temp_file = downloadFile2Temp(input_file, input_name, ext_allowed)
- if temp_file[:8] == 'ERREUR: ':
- request.session.flash(temp_file, 'danger')
- return HTTPFound(location=url)
-
- # fabriquer le nom du document
- filename = '%s-DD%s-%s' % (societe, nochantier, input_name)
- tempFile2Dossier(request, societe, nochantier, '0', 0, origine, temp_file, filename, logged_in)
-
- request.session.flash('%s : Ce fichier est téléchargé avec succès.' % input_name, 'success')
+ # récupère le(s) fichier(s) download dans le dossier /tmp
+ fileslist = request.POST.getall('files')
+ for f in fileslist:
+ # récupère le fichier download dans le dossier /tmp
+ input_file = f.file
+ input_name = f.filename
+ ext_allowed = ['pdf',]
+ temp_file = downloadFile2Temp(input_file, input_name, ext_allowed)
+ if temp_file[:8] == 'ERREUR: ':
+ request.session.flash(temp_file, 'danger')
+ return HTTPFound(location=url)
+
+ # fabriquer le nom du document
+ filename = '%s-DD%s-%s' % (societe, nochantier, input_name)
+ tempFile2Dossier(request, societe, nochantier, '0', origine, temp_file, filename, 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, nodossier, 0, 0, origine, '')
+ docs_attaches = get_docs_attaches(request, nodossier, 0, origine, '')
return {
'page_title': page_title,
@@ -325,12 +329,20 @@ def upload_doc(request):
@view_config(route_name='upload_img', renderer='../templates/dossier/upload_img.pt', permission='view')
def upload_img(request):
- # Paramètres d'appel :
- # - gérer images d'un dossier : upload_img/nodossier/z0
- # - gérer images d'un rapport RDF : upload_img/norapport/nosection
- nosection = request.matchdict['nosection']
- # Gérer les photos d'un dossier (nosection=0) ?
- if nosection == '0':
+ """
+ Paramètres d'appel :
+ - gestion images d'un dossier :
+ norapport = numero du dossier
+ origine = 'CLT' si images du dossier
+ 'FRN' si images techniques
+ - gestion images d'un rapport RDF :
+ norapport = numéro du rapport de RDF
+ origine = '1' ou '2', numéro du de la section du rapport
+
+ """
+ origine = request.matchdict['origine']
+ # Gérer les photos d'un dossier ?
+ if len(origine) > 1:
norapport = '0'
# oui, lire le dossier
nodossier = request.matchdict['norapport']
@@ -340,9 +352,9 @@ def upload_img(request):
return HTTPFound(location=request.route_url("rdf_list"))
societe = rapport.societe
nochantier = rapport.NO_ID
- url = request.route_url("upload_img", norapport=nodossier, nosection=nosection)
+ url = request.route_url("upload_img", norapport=nodossier, origine=origine)
url_retour = request.route_url('dossier_view', nodossier=nodossier)
- titre = "Gérer les photos du dossier %s/%s" % (nodossier, nosection)
+ titre = "Gérer les photos du dossier %s" % (nodossier)
else:
norapport = request.matchdict['norapport']
rapport = get_rapport_by_no_id(request, norapport)
@@ -352,9 +364,9 @@ def upload_img(request):
societe = 'PL'
nochantier = rapport.nochantier
nodossier = '%s-%s' % (societe, nochantier)
- url = request.route_url("upload_img", norapport=norapport, nosection=nosection)
+ url = request.route_url("upload_img", norapport=norapport, origine=origine)
url_retour = request.route_url('rdf_view', no_id=norapport)
- titre = "Gérer les photos du rapport %s-%s/%s" % (societe, norapport, nosection)
+ titre = "Gérer les photos du rapport %s-%s/%s" % (societe, norapport, origine)
logged_in = request.authenticated_userid.upper()
message = ""
@@ -374,12 +386,12 @@ def upload_img(request):
# fabriquer le nom du rapport
filename = '%s-DD%s-%s-%s' % (societe, nochantier, norapport, input_name)
- tempFile2Dossier(request, societe, nochantier, norapport, nosection, 'CLT', temp_file, filename, logged_in)
+ tempFile2Dossier(request, societe, nochantier, norapport, origine, temp_file, filename, 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, nodossier, int(norapport), int(nosection))
+ photos = get_photos(request, nodossier, int(norapport), origine)
return {
'page_title': titre,
@@ -388,7 +400,7 @@ def upload_img(request):
'nodossier': nodossier,
'nochantier': nochantier,
'norapport': norapport,
- 'nosection': nosection,
+ 'origine': origine,
'photos': photos,
'total_size' : photos_size(photos),
'docs_url': request.static_url(request.registry.settings['mondumas.devfac_url']),
@@ -599,8 +611,8 @@ def rdf_view(request):
date_facture = ''
# lire tous les photos attachées
- photos1 = get_photos(request, nodossier, norapport, 1)
- photos2 = get_photos(request, nodossier, norapport, 2)
+ photos1 = get_photos(request, nodossier, norapport, '1')
+ photos2 = get_photos(request, nodossier, norapport, '2')
if 'form.generate' in request.params:
footer_url = request.static_url('mondumas:static/img/footer_PL.html')
@@ -695,8 +707,8 @@ def rdf_rapport(request):
date_relu = ''
# lire tous les photos attachées
- photos1 = get_photos(request, nodossier, norapport, 1)
- photos2 = get_photos(request, nodossier, norapport, 2)
+ photos1 = get_photos(request, nodossier, norapport, '1')
+ photos2 = get_photos(request, nodossier, norapport, '2')
return {
'page_title': '',
@@ -720,18 +732,56 @@ def delete_img(request):
societe = nodossier[0:2]
nochantier = nodossier[3:]
norapport = request.matchdict['norapport']
- nosection = request.matchdict['nosection']
+ origine = request.matchdict['origine']
nomfic = request.matchdict['nomfic']
- if nosection == '0':
- url_retour = location=request.route_url("upload_img", norapport=nodossier, nosection=nosection)
+ # origine de l'image ?
+ if len(origine) > 1:
+ url_retour = location=request.route_url("upload_img", norapport=nodossier, origine=origine)
else:
- url_retour = location=request.route_url("upload_img", norapport=norapport, nosection=nosection)
+ url_retour = location=request.route_url("upload_img", norapport=norapport, origine=origine)
- delete_photos(request, nodossier, norapport, nosection, nomfic)
- request.session.flash(u"La photo %s a été supprimé avec succès" % (nomfic), 'success')
+ delete_photos(request, nodossier, norapport, origine, nomfic)
+ request.session.flash(u"La photo %s a été supprimée avec succès" % (nomfic), 'success')
return HTTPFound(url_retour)
+@view_config(route_name='rotate_img', permission='view')
+def rotate_img(request):
+
+ nodossier = request.matchdict['nodossier']
+ societe = nodossier[0:2]
+ nochantier = nodossier[3:]
+ norapport = request.matchdict['norapport']
+ origine = request.matchdict['origine']
+ nomfic = request.matchdict['nomfic']
+ angle = int(request.matchdict['angle'])
+
+ # afin de refresh l'image, il faut lui donner un nouveau nom
+ n = nomfic.split('.')
+ new_nomfic = n[0] + 'r.' + n[1]
+
+ # origine de l'image ?
+ if len(origine) > 1:
+ url_retour = location=request.route_url("upload_img", norapport=nodossier, origine=origine)
+ image_file = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, nomfic)
+ new_file = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, new_nomfic)
+ else:
+ url_retour = location=request.route_url("upload_img", norapport=norapport, origine=origine)
+ image_file = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic)
+ new_file = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, new_nomfic)
+
+ # using the Python Image Library (PIL) to rotate an image
+ img_in = Image.open(image_file)
+ img_out = img_in.rotate(angle, expand=True)
+ # create a new file name for saving the result
+ img_out.save(new_file)
+
+ # rename dans la BD
+ rename_photos(request, nodossier, norapport, origine, nomfic, new_nomfic)
+
+ return HTTPFound(url_retour)
+
+
@view_config(route_name='rdf_bill', renderer='../templates/dossier/rdf_bill.pt', permission='view')
def rdf_bill(request):
logged_in = request.authenticated_userid.upper()
@@ -933,7 +983,7 @@ def demandes_dl(request):
# récupère le nom du fichier et ajouter le no de dossier
filename = os.path.basename(temp_file_path)
filename = '%s-DD%s-%s' % (societe, nochantier, filename)
- tempFile2Dossier(request, societe, nochantier, '0', 0, 'CLT', temp_file_path, filename, 'EMAIL')
+ tempFile2Dossier(request, societe, nochantier, '0', 'CLT', temp_file_path, filename, 'EMAIL')
traite = 1
return traite
@@ -953,7 +1003,7 @@ def demandes_dl(request):
# récupère le nom du fichier et ajouter le no de dossier
filename = '%s-DD%s-%s' % (societe, dem_devis.NO_ID, 'ANNULATION.pdf')
- tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', 0, 'CLT', temp_file_path, filename, 'EMAIL')
+ tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', 'CLT', temp_file_path, filename, 'EMAIL')
# insérer une ligne de suivi ANNULATION
insert_suivi(request, nodossier, '!!MISSION ANNULEE PAR la MAIF')
# log de nuit
@@ -971,7 +1021,7 @@ def demandes_dl(request):
# récupère le nom du fichier et ajouter le no de dossier
filename = '%s-DD%s-%s' % (societe, dem_devis.NO_ID, 'ANNULATION.pdf')
- tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', 0, 'CLT', temp_file_path, filename, 'EMAIL')
+ tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', 'CLT', temp_file_path, filename, 'EMAIL')
#import pdb;pdb.set_trace()
# insérer une ligne de suivi ANNULATION
@@ -1092,7 +1142,7 @@ def downloadFile2Temp(input_file, input_name, ext_allowed):
return temp_file_path
-def tempFile2Dossier(request, societe, nochantier, norapport, nosection, origine, temp_file, filename, logged_in):
+def tempFile2Dossier(request, societe, nochantier, norapport, origine, temp_file, filename, logged_in):
# créer le répertoire du chantier
if norapport == '0':
path = '%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier)
@@ -1109,7 +1159,7 @@ def tempFile2Dossier(request, societe, nochantier, norapport, nosection, origine
shutil.move(temp_file, filepath)
filesize = round(os.path.getsize(filepath) / 1024)
- insert_dossier_attaches(request, '%s-%s' % (societe, nochantier), norapport, nosection, origine, filename, '%s Ko' % str(filesize), logged_in)
+ insert_dossier_attaches(request, '%s-%s' % (societe, nochantier), norapport, origine, filename, '%s Ko' % str(filesize), logged_in)
def download_pdf_to_tmp(email_message):
# import pdb;pdb.set_trace()
@@ -1448,7 +1498,7 @@ def upload_om(request):
# récupère le nom du fichier et ajouter le no de dossier
filename = os.path.basename(temp_file_path)
filename = '%s-DD%s-%s' % (societe, nochantier, filename)
- tempFile2Dossier(request, societe, nochantier, '0', 0, 'CLT', temp_file_path, filename, 'EMAIL')
+ tempFile2Dossier(request, societe, nochantier, '0', 'CLT', temp_file_path, filename, 'EMAIL')
return message