lier le pdf de damnde d'intervention au dossier

This commit is contained in:
2019-08-03 16:39:03 +02:00
parent b0cd27ce4f
commit f71e613189
4 changed files with 52 additions and 18 deletions

View File

@@ -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