def get_titre(instance, no_dossier, texte_contrat): reponse = "" if texte_contrat: reponse = epurer_ligne(texte_contrat) if reponse.startswith("20."): if "CE" in instance: position_debut = 7 else: position_debut = 6 else: position_debut = 0 nbr_caracteres = reponse.find(no_dossier) - position_debut - 1 #En cas d'erreur pour initialiser nbr_caracteres, #on le met égal à position_debut if nbr_caracteres <= 0 or nbr_caracteres >= len(texte_contrat): nbr_caracteres = 0 reponse = mid(texte_contrat, position_debut, nbr_caracteres) reponse = epurer_ligne(reponse) return reponse
def epurer_contrat(texte, no_decision, titre, pour, no_dossier): if texte: reponse = texte.strip() if no_decision: reponse = reponse.replace(no_decision,"") if titre: reponse = reponse.replace(titre,"") if pour: reponse = reponse.replace(pour,"") if no_dossier: reponse = reponse.replace(no_dossier,"") reponse = epurer_ligne(reponse) return reponse
def odj2contrats(a_verifier): #Initialisation des variables instance = a_verifier[1] source = a_verifier[3] no_decision = "" pour = "" no_dossier = "" instance_reference = "" no_appel_offre = "" debut_no_appel_offre = "" fin_no_appel_offre = "" fournisseur = "" nbr_fournisseur = 0 depense_totale = "" texte_contrat = "" #Indiquer le début du traitement afficher_statut_traitement("Début du traitement odj2contrats") #Passer au travers des fichiers dans REPERTOIRE_TXT for filename in os.listdir(REPERTOIRE_TXT): fichier_TXT = os.path.join(REPERTOIRE_TXT, filename) print("Traitement du fichier %s" % fichier_TXT) #Enlever le BOM au début du fichier strip_bom(fichier_TXT) #Ouverture du fichier pour les résultats # if est_fichier_vide("C:\\ContratsOuvertsMtl\\contrats_traites.csv"): # contrats_traites = open("C:\\ContratsOuvertsMtl\\contrats_traites.csv", "a", encoding="utf-8") # fcontrats_traites.writerow(["instance", "date_rencontre", "no_decision", "no_dossier", "instance_reference", "no_appel_offres", "nbr_soumissions", "pour", "texte_contrat", "fournisseur", "source", "date_traitement"]) # contrats_traites.close() contrats_traites = open("C:\\ContratsOuvertsMtl\\contrats_traites.csv", "w", encoding="utf-8") fcontrats_traites = csv.writer(contrats_traites, delimiter=';') fcontrats_traites.writerow([ "instance", "date_rencontre", "no_decision", "titre", "no_dossier", "instance_reference", "no_appel_offres", "nbr_soumissions", "pour", "texte_contrat", "fournisseur", "montant", "type_contrat", "huis_clos", "source", "date_traitement" ]) #Passer au travers du fichier texte de l'ordre du jour with open( fichier_TXT, "r", encoding="utf-8", ) as f: for ligne in f: if isinstance(ligne, str): ligne.encode('utf8') else: unicode(ligne).encode('utf8') ligne.strip() if ligne: #Ne pas traiter les lignes vides ligne2 = epurer_ligne(ligne) print(ligne2) if not est_numero_de_page( ligne2 ): #Ne pas traiter les lignes qui donnes le numéro de page du PDF #Début d'une décision if est_no_decision(ligne2): #C'est une nouvelle décision, #écrire le dernier contrat dans le fichier contrats_traites.txt #Dans le traitement, sur la première décision, il n'y a encore rien à écrire if no_decision: print("--------") print(texte_contrat) no_appel_offre = getNo_appel_offres( texte_contrat) nbr_soumissions = getNbr_soumissions( texte_contrat) fournisseur = get_fournisseur(texte_contrat) nbr_fournisseur = get_nombre_fournisseurs( fournisseur, nbr_fournisseur) montant = get_montant(texte_contrat) type_contrat = get_type_contrat(texte_contrat) huis_clos = get_huis_clos(texte_contrat) titre = get_titre(instance, no_dossier, texte_contrat) texte_contrat = epurer_contrat( texte_contrat, no_decision, titre, pour, no_dossier) #Écrire le nom des champs dans le fichier contrats_traites.csv fcontrats_traites.writerow([ instance, DATE_RENCONTRE, no_decision, titre, no_dossier, instance_reference, no_appel_offre, nbr_soumissions, pour, texte_contrat, fournisseur, montant, type_contrat, huis_clos, STATUT, source, DATE_TRAITEMENT ]) #Réinitialiser les variables no_decision = get_no_decision( ligne2, instance) #Nouveau numéro de décision titre = "" pour = "" #Initaliser le pour no_dossier = "" #Initaliser le numéro de dossier instance_reference = "" #Initialiser l'instance référente du contrat no_appel_offre = "" #Initaliser le numéro d'appel d'offre debut_no_appel_offre = "" fin_no_appel_offre = "" fournisseur = "" montant = "" type_contrat = "", depense_totale = "" texte_contrat = "" #Initaliser le texte du contrat huis_clos = "" #L'instance référence du contrat if est_instance_reference(ligne2): instance_reference = set_instance_reference(ligne2) #La variable 'pour' est l'entité pour qui le contrat est adopté if est_instance_reference(ligne2): pour = set_instance_reference(ligne2) #Numéro de dossier if not no_dossier: if est_no_dossier(ligne2): no_dossier = get_no_dossier(ligne2) #Numéro de décision if est_no_decision(ligne2): no_decision = get_no_decision(ligne2, instance) ligne2 = ligne2.replace( no_decision, "" ) #Dans certains cas, le texte du contrat début sur la ligne du numéro de décision ligne2 = epurer_ligne(ligne2) #Texte du contrat if not texte_contrat: texte_contrat = ligne2 #C'est le début du texte du contrat, évite d'avoir un espace au début else: if not est_instance_reference(ligne2): if ligne2: texte_contrat = epurer_ligne( texte_contrat) + " " + ligne2 #Écrire le dernier contrat no_appel_offre = getNo_appel_offres(texte_contrat) nbr_soumissions = getNbr_soumissions(texte_contrat) fournisseur = get_fournisseur(texte_contrat) montant = get_montant(texte_contrat) texte_contrat = epurer_contrat(texte_contrat, no_decision, titre, pour, no_dossier) titre = get_titre(instance, no_dossier, texte_contrat) fcontrats_traites.writerow([ instance, DATE_RENCONTRE, no_decision, titre, no_dossier, instance_reference, no_appel_offre, nbr_soumissions, pour, texte_contrat, fournisseur, montant, type_contrat, huis_clos, STATUT, source, DATE_TRAITEMENT ]) #Indiquer que le traitement est terminé afficher_statut_traitement("Traitement termimé odj2contrats")
def odj2contrats(a_verifier): #Initialisation des variables instance = a_verifier[1] source = a_verifier[3] no_decision = "" pour = "" no_dossier = "" instance_reference = "" no_appel_offre = "" debut_no_appel_offre = "" fin_no_appel_offre = "" fournisseur = "" nbr_fournisseur = 0 depense_totale = "" texte_contrat = "" #Indiquer le début du traitement afficher_statut_traitement("Début du traitement odj2contrats") #Passer au travers des fichiers dans REPERTOIRE_TXT for filename in os.listdir(REPERTOIRE_TXT): fichier_TXT = os.path.join(REPERTOIRE_TXT, filename) print("Traitement du fichier %s" % fichier_TXT) #Enlever le BOM au début du fichier strip_bom(fichier_TXT) #Ouverture du fichier pour les résultats # if est_fichier_vide("C:\\ContratsOuvertsMtl\\contrats_traites.csv"): # contrats_traites = open("C:\\ContratsOuvertsMtl\\contrats_traites.csv", "a", encoding="utf-8") # fcontrats_traites.writerow(["instance", "date_rencontre", "no_decision", "no_dossier", "instance_reference", "no_appel_offres", "nbr_soumissions", "pour", "texte_contrat", "fournisseur", "source", "date_traitement"]) # contrats_traites.close() contrats_traites = open("C:\\ContratsOuvertsMtl\\contrats_traites.csv", "w", encoding="utf-8") fcontrats_traites = csv.writer(contrats_traites, delimiter = ';') fcontrats_traites.writerow(["instance", "date_rencontre", "no_decision", "titre", "no_dossier", "instance_reference", "no_appel_offres", "nbr_soumissions", "pour", "texte_contrat", "fournisseur", "montant", "type_contrat", "huis_clos", "source", "date_traitement"]) #Passer au travers du fichier texte de l'ordre du jour with open(fichier_TXT, "r", encoding = "utf-8", ) as f: for ligne in f: if isinstance(ligne, str): ligne.encode('utf8') else: unicode(ligne).encode('utf8') ligne.strip() if ligne: #Ne pas traiter les lignes vides ligne2 = epurer_ligne(ligne) print(ligne2) if not est_numero_de_page(ligne2): #Ne pas traiter les lignes qui donnes le numéro de page du PDF #Début d'une décision if est_no_decision(ligne2): #C'est une nouvelle décision, #écrire le dernier contrat dans le fichier contrats_traites.txt #Dans le traitement, sur la première décision, il n'y a encore rien à écrire if no_decision: print("--------") print(texte_contrat) no_appel_offre = getNo_appel_offres(texte_contrat) nbr_soumissions = getNbr_soumissions(texte_contrat) fournisseur = get_fournisseur(texte_contrat) nbr_fournisseur = get_nombre_fournisseurs(fournisseur, nbr_fournisseur) montant = get_montant(texte_contrat) type_contrat = get_type_contrat(texte_contrat) huis_clos = get_huis_clos(texte_contrat) titre = get_titre(instance, no_dossier, texte_contrat) texte_contrat = epurer_contrat(texte_contrat, no_decision, titre, pour, no_dossier) #Écrire le nom des champs dans le fichier contrats_traites.csv fcontrats_traites.writerow([instance, DATE_RENCONTRE, no_decision, titre, no_dossier, instance_reference, no_appel_offre, nbr_soumissions, pour, texte_contrat, fournisseur, montant, type_contrat, huis_clos, STATUT, source, DATE_TRAITEMENT]) #Réinitialiser les variables no_decision = get_no_decision(ligne2, instance) #Nouveau numéro de décision titre = "" pour = "" #Initaliser le pour no_dossier = "" #Initaliser le numéro de dossier instance_reference = "" #Initialiser l'instance référente du contrat no_appel_offre = "" #Initaliser le numéro d'appel d'offre debut_no_appel_offre = "" fin_no_appel_offre = "" fournisseur = "" montant = "" type_contrat = "", depense_totale = "" texte_contrat = "" #Initaliser le texte du contrat huis_clos = "" #L'instance référence du contrat if est_instance_reference(ligne2): instance_reference = set_instance_reference(ligne2) #La variable 'pour' est l'entité pour qui le contrat est adopté if est_instance_reference(ligne2): pour = set_instance_reference(ligne2) #Numéro de dossier if not no_dossier: if est_no_dossier(ligne2): no_dossier = get_no_dossier(ligne2) #Numéro de décision if est_no_decision(ligne2): no_decision = get_no_decision(ligne2, instance) ligne2 = ligne2.replace(no_decision,"") #Dans certains cas, le texte du contrat début sur la ligne du numéro de décision ligne2 = epurer_ligne(ligne2) #Texte du contrat if not texte_contrat: texte_contrat = ligne2 #C'est le début du texte du contrat, évite d'avoir un espace au début else: if not est_instance_reference(ligne2): if ligne2: texte_contrat = epurer_ligne(texte_contrat) + " " + ligne2 #Écrire le dernier contrat no_appel_offre = getNo_appel_offres(texte_contrat) nbr_soumissions = getNbr_soumissions(texte_contrat) fournisseur = get_fournisseur(texte_contrat) montant = get_montant(texte_contrat) texte_contrat = epurer_contrat(texte_contrat, no_decision, titre, pour, no_dossier) titre = get_titre(instance, no_dossier, texte_contrat) fcontrats_traites.writerow([instance, DATE_RENCONTRE, no_decision, titre, no_dossier, instance_reference, no_appel_offre, nbr_soumissions, pour, texte_contrat, fournisseur, montant, type_contrat, huis_clos, STATUT, source, DATE_TRAITEMENT]) #Indiquer que le traitement est terminé afficher_statut_traitement("Traitement termimé odj2contrats")