From f71e613189b805ab49312524981c9e3d4af505c7 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Sat, 3 Aug 2019 16:39:03 +0200 Subject: [PATCH] lier le pdf de damnde d'intervention au dossier --- mondumas/models/dossier.py | 5 +++ mondumas/templates/dossier/devis_view.pt | 4 ++ mondumas/templates/dossier/dossier_view.pt | 12 ++++-- mondumas/views/dossier.py | 49 +++++++++++++++------- 4 files changed, 52 insertions(+), 18 deletions(-) diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index 535a848..b7989dc 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -271,3 +271,8 @@ def insert_dossier(request, mbx_name, mbx_search, logged_in, c_nom, c_adr, c_adr query = """CALL spINS_DEMANDES(:societe, :cd_cli, :c_nom, :c_adr, :c_adr2, :c_cp, :c_ville, :c_tel1, 'MR', :cabinet, 6, :nosin, :c_obs, :tx_trav, :logged_in);""" execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli, 'c_nom': c_nom, 'c_adr': c_adr, 'c_adr2': c_adr2, 'c_cp': c_cp, 'c_ville': c_ville,'c_tel1': c_tel1, 'cabinet': cabinet, 'nosin': nosin, 'c_obs': c_obs, 'tx_trav': tx_trav, 'logged_in': logged_in}) + + query = "SELECT no_id FROM dem_devis WHERE societe = :societe AND date = curdate() AND cd_cli = :cd_cli ORDER BY no_id desc LIMIT 1;" + results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first() + return results.no_id + \ No newline at end of file diff --git a/mondumas/templates/dossier/devis_view.pt b/mondumas/templates/dossier/devis_view.pt index 2fc6f14..86a6cf8 100644 --- a/mondumas/templates/dossier/devis_view.pt +++ b/mondumas/templates/dossier/devis_view.pt @@ -44,11 +44,15 @@ Police
Sinistre
Votre référence
+ Observation
+ Travaux
${dossier.NOPOL}
${dossier.NOSIN}
${dossier.VREF}
+ ${dossier.C_OBS}
+ ${dossier.TX_TRAV}
diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index 5caeb03..e1dd9ad 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -37,7 +37,7 @@ Cabinet
Expert
- Référence expert + Référence expert
${dossier.nom_cabinet}
@@ -50,11 +50,15 @@ Police
Sinistre
Votre référence
+ Observation
+ Travaux
- ${dossier.NOPOL}
- ${dossier.NOSIN}
- ${dossier.VREF}
+ ${dossier.NOPOL}
+ ${dossier.NOSIN}
+ ${dossier.VREF}
+ ${dossier.C_OBS}
+ ${dossier.TX_TRAV}
diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index 6b9625f..8a2d351 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -801,12 +801,12 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in): fileName = part.get_filename() if bool(fileName): # copier le fichier PDF dans le dossier /tmp - filePath = os.path.join('/tmp/', fileName) - if not os.path.isfile(filePath) : - fp = open(filePath, 'wb') + temp_file_path = os.path.join('/tmp/', fileName) + if not os.path.isfile(temp_file_path) : + fp = open(temp_file_path, 'wb') fp.write(part.get_payload(decode=True)) fp.close() - return filePath + return temp_file_path def convert_pdf_to_txt(path): resource_manager = PDFResourceManager() @@ -830,6 +830,7 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in): # close open handles converter.close() + fh.close() # ecrire le texte dans un fichier extracted_file = '/tmp/log_file.txt' with open(extracted_file, "w") as my_log: @@ -838,9 +839,9 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in): return extracted_text, extracted_file - def generer_dossier(request, mbx_name, mbx_search, filepath, logged_in): + def generer_dossier(request, mbx_name, mbx_search, extracted_file, temp_file_path, logged_in): # parcourir les lignes pour retrouver les infos utiles - with open(filepath) as fp: + with open(extracted_file) as fp: cnt = 1 line = fp.readline() c_obs = '' @@ -885,10 +886,30 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in): # lire ligne suivante line = fp.readline() cnt += 1 - - # créer un dem_devis - insert_dossier(request, mbx_name, mbx_search, logged_in, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, no_sinistre, c_obs, tx_trav) + + fp.close() + # créer un dem_devis et récupèrer son no_id + nochantier = insert_dossier(request, mbx_name, mbx_search, logged_in, c_nom, c_adr, c_adr2, c_cp, c_ville, c_tel1, no_sinistre, c_obs, tx_trav) + societe = mbx_name[0:2].upper() + nodossier = "%s-%s" % (societe, nochantier) + + # 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) + # 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) + os.makedirs(path, exist_ok=True) + + file_path = os.path.join(path, filename) + # Now that we know the file has been fully saved to disk move it into place. + shutil.move(temp_file_path, file_path) + # get filz size + filesize = round(os.stat(file_path).st_size / 1000) + + import pdb;pdb.set_trace() + insert_dossier_attaches(request, nodossier, 0, filename, '%s Ko' % str(filesize), logged_in) + return # rechercher les emails de demandes dans le INBOX @@ -913,16 +934,16 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in): # demande annulée ? if email_subject.find('Annulation ') < 0: # downloading attachment - filePath = download_pdf_to_tmp(email_message) + temp_file_path = download_pdf_to_tmp(email_message) # convertir le fichier pdf en texte - texte, extracted_file = convert_pdf_to_txt(filePath) + texte, extracted_file = convert_pdf_to_txt(temp_file_path) # mission annulée if 'Objet : ANNULATION MISSION' in texte: # supprime le pdf - os.remove(filePath) + os.remove(temp_file_path) else: - # genere le dossier d'après - generer_dossier(request, mbx_name, mbx_search, extracted_file, logged_in) + # genere le dossier d'après le mail + generer_dossier(request, mbx_name, mbx_search, extracted_file, temp_file_path, logged_in) return