lier le pdf de damnde d'intervention au dossier
This commit is contained in:
@@ -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);"""
|
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,
|
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})
|
'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
|
||||||
|
|
||||||
@@ -44,11 +44,15 @@
|
|||||||
Police<br />
|
Police<br />
|
||||||
Sinistre<br />
|
Sinistre<br />
|
||||||
Votre référence<br />
|
Votre référence<br />
|
||||||
|
Observation<br />
|
||||||
|
Travaux<br />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
${dossier.NOPOL}<br />
|
${dossier.NOPOL}<br />
|
||||||
${dossier.NOSIN}<br />
|
${dossier.NOSIN}<br />
|
||||||
${dossier.VREF}<br />
|
${dossier.VREF}<br />
|
||||||
|
${dossier.C_OBS}<br />
|
||||||
|
${dossier.TX_TRAV}<br />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<td>
|
<td>
|
||||||
Cabinet<br />
|
Cabinet<br />
|
||||||
Expert<br />
|
Expert<br />
|
||||||
Référence expert
|
Référence expert<br />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
${dossier.nom_cabinet}<br />
|
${dossier.nom_cabinet}<br />
|
||||||
@@ -50,11 +50,15 @@
|
|||||||
Police<br />
|
Police<br />
|
||||||
Sinistre<br />
|
Sinistre<br />
|
||||||
Votre référence<br />
|
Votre référence<br />
|
||||||
|
Observation<br />
|
||||||
|
Travaux<br />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
${dossier.NOPOL}<br />
|
${dossier.NOPOL}<br />
|
||||||
${dossier.NOSIN}<br />
|
${dossier.NOSIN}<br />
|
||||||
${dossier.VREF}<br />
|
${dossier.VREF}<br />
|
||||||
|
${dossier.C_OBS}<br />
|
||||||
|
${dossier.TX_TRAV}<br />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -801,12 +801,12 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in):
|
|||||||
fileName = part.get_filename()
|
fileName = part.get_filename()
|
||||||
if bool(fileName):
|
if bool(fileName):
|
||||||
# copier le fichier PDF dans le dossier /tmp
|
# copier le fichier PDF dans le dossier /tmp
|
||||||
filePath = os.path.join('/tmp/', fileName)
|
temp_file_path = os.path.join('/tmp/', fileName)
|
||||||
if not os.path.isfile(filePath) :
|
if not os.path.isfile(temp_file_path) :
|
||||||
fp = open(filePath, 'wb')
|
fp = open(temp_file_path, 'wb')
|
||||||
fp.write(part.get_payload(decode=True))
|
fp.write(part.get_payload(decode=True))
|
||||||
fp.close()
|
fp.close()
|
||||||
return filePath
|
return temp_file_path
|
||||||
|
|
||||||
def convert_pdf_to_txt(path):
|
def convert_pdf_to_txt(path):
|
||||||
resource_manager = PDFResourceManager()
|
resource_manager = PDFResourceManager()
|
||||||
@@ -830,6 +830,7 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in):
|
|||||||
|
|
||||||
# close open handles
|
# close open handles
|
||||||
converter.close()
|
converter.close()
|
||||||
|
fh.close()
|
||||||
# ecrire le texte dans un fichier
|
# ecrire le texte dans un fichier
|
||||||
extracted_file = '/tmp/log_file.txt'
|
extracted_file = '/tmp/log_file.txt'
|
||||||
with open(extracted_file, "w") as my_log:
|
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
|
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
|
# parcourir les lignes pour retrouver les infos utiles
|
||||||
with open(filepath) as fp:
|
with open(extracted_file) as fp:
|
||||||
cnt = 1
|
cnt = 1
|
||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
c_obs = ''
|
c_obs = ''
|
||||||
@@ -886,8 +887,28 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in):
|
|||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
cnt += 1
|
cnt += 1
|
||||||
|
|
||||||
# créer un dem_devis
|
fp.close()
|
||||||
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)
|
|
||||||
|
# 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
|
return
|
||||||
|
|
||||||
@@ -913,16 +934,16 @@ def demandes_generer(request, conn, mbx_name, mbx_search, liste, logged_in):
|
|||||||
# demande annulée ?
|
# demande annulée ?
|
||||||
if email_subject.find('Annulation ') < 0:
|
if email_subject.find('Annulation ') < 0:
|
||||||
# downloading attachment
|
# downloading attachment
|
||||||
filePath = download_pdf_to_tmp(email_message)
|
temp_file_path = download_pdf_to_tmp(email_message)
|
||||||
|
|
||||||
# convertir le fichier pdf en texte
|
# 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
|
# mission annulée
|
||||||
if 'Objet : ANNULATION MISSION' in texte:
|
if 'Objet : ANNULATION MISSION' in texte:
|
||||||
# supprime le pdf
|
# supprime le pdf
|
||||||
os.remove(filePath)
|
os.remove(temp_file_path)
|
||||||
else:
|
else:
|
||||||
# genere le dossier d'après
|
# genere le dossier d'après le mail
|
||||||
generer_dossier(request, mbx_name, mbx_search, extracted_file, logged_in)
|
generer_dossier(request, mbx_name, mbx_search, extracted_file, temp_file_path, logged_in)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user