def formatter_montant(montant): reponse = "" if montant: reponse = left(montant, len(montant) - 3) + "$" return reponse
def get_no_decision(texte, instance): reponse = "" if texte: if est_no_decision(texte): if "CE" in instance: if len(texte) >= 6 and texte.startswith("20."): reponse = left(texte, 6) else: if len(texte) >= 5 and texte.startswith("20."): reponse = left(texte, 5) return reponse
def get_no_decision(texte, instance): reponse = "" if texte: if est_no_decision(texte): if "CE" in instance: if len(texte) >= 6 and texte.startswith("20."): reponse = left(texte,6) else: if len(texte) >= 5 and texte.startswith("20."): reponse = left(texte,5) return reponse
def envoyer_twit(message): if message: message = message.strip() message = left(message, 140) t = Twitter(auth=OAuth( consumer_key='', consumer_secret='', token='', token_secret='' )) t.statuses.update(status = message)
def get_fournisseur(texte): reponse = "" position_debut_prefixe = -1 position_debut_suffixe = -1 prefixe_suffixe = [ ["Accorder un contrat à ", " pour "], ["Accorder des contrats à ", " pour "], ["Accorder un contrat à ", " d'une durée de "], ["Accorder un contrat à l'entreprise ", " pour les travaux de "], ["Accorder un contrat à la firme ", " pour les travaux "], ["Accorder un contrat à les ", " pour l'achat "], ["Accorder un contrat de services professionnels à ", " pour "], ["Accorder à la firme ", " un contrat de "], ["Conclure avec la firme ", "une entente-cadre "], ["Conclure 2 ententes-cadres avec ", " pour des travaux "], [ "Conclure une entente-cadre de services professionnels avec ", " pour la réalisation " ], ["Conclure avec ", " une entente-cadre "], [" de gré à gré à la ", " pour l'achat "], ["Accorder un soutien financier de ", " pour réaliser "] ] #1. Rechercher le fournisseuur à partir de la liste de référence with open( FICHIER_FOURNISSEUR, "r", encoding="utf-8", ) as f: reader = csv.reader(f, delimiter=";") for ligne in reader: temp_fournisseur = ligne[0] + " " temp_fournisseur = temp_fournisseur.strip() if temp_fournisseur in texte: reponse = temp_fournisseur #2. Le fournisseur n'a pas été trouvé dans la liste de référence # on fait alors une recherche avec les termes clés # se trouvant avant et après le nom du fournisseur if not reponse: for i in prefixe_suffixe: position_debut_prefixe = texte.find(i[0]) if position_debut_prefixe > -1: position_debut_suffixe = texte.find( i[1], position_debut_prefixe + len(i[0])) if position_debut_suffixe > -1: reponse = mid( texte, position_debut_prefixe + len(i[0]), position_debut_suffixe - position_debut_prefixe - len(i[0])) break #Enlever s'il y a une virgule après le nom #On ne fait pas un replace car il peut y avoir des virgules valides dans le nom du fournisseur if reponse: reponse = reponse.strip() #Le strip() ne semble pas fonctionner if right(reponse, 1) == ",": reponse = left(reponse, len(reponse) - 1) if right(reponse, 2) == ", ": reponse = left(reponse, len(reponse) - 2) return reponse
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") REPERTOIRE_TXT = "C:\\ContratsOuvertsMtl\\Ordres_du_jour\\TXT" FICHIER_FOURNISSEUR = "C:\\ContratsOuvertsMtl\\fournisseurs.csv" #Emplacement du fichier de la liste des founisseurs DATE_RENCONTRE = "2015-09-01" #À changer PREFIXE_DECISION = "20." STATUT = "Ordre du jour présenté" #À changer au besoin DATE_TRAITEMENT = left( str(datetime.datetime.today()), 19) #Date à laquelle le traitement des contrats a été faite #Arranger le format AAAA-MM-JJ def main(): #a_verifier : instance, # lien de la page web # abréviation a_verifier = [[ "CE", "CE", "",
def get_fournisseur(texte): reponse = "" position_debut_prefixe = -1 position_debut_suffixe = -1 prefixe_suffixe = [["Accorder un contrat à ", " pour "], ["Accorder des contrat à ", " pour "], ["Accorder un contrat à ", " d'une durée de "], ["Accorder un contrat à l'entreprise ", " pour les travaux de "], ["Accorder un contrat à la firme ", " pour les travaux "], ["Accorder un contrat à les ", " pour l'achat "], ["Accorder un contrat de services professionnels à ", " pour "], ["Accorder à la firme ", " un contrat de "], ["Conclure avec la firme ", "une entente-cadre "], ["Conclure 2 ententes-cadres avec "," pour des travaux "], ["Conclure une entente-cadre de services professionnels avec ", " pour la réalisation "], [" Conclure avec ", " une entente-cadre "], [" de gré à gré à la ", " pour l'achat "], ["Accorder un soutien financier de ", " pour réaliser "] ] #1. Rechercher le fournisseuur à partir de la liste de référence with open(FICHIER_FOURNISSEUR, "r", encoding = "utf-8", ) as f: reader = csv.reader(f, delimiter = ";") for ligne in reader: temp_fournisseur = ligne[0] + " " temp_fournisseur = temp_fournisseur.strip() if temp_fournisseur in texte: reponse = temp_fournisseur #2. Le fournisseur n'a pas été trouvé dans la liste de référence # on fait alors une recherche avec les termes clés # se trouvant avant et après le nom du fournisseur if not reponse: for i in prefixe_suffixe: position_debut_prefixe = texte.find(i[0]) if position_debut_prefixe > -1: position_debut_suffixe = texte.find(i[1], position_debut_prefixe + len(i[0])) if position_debut_suffixe > -1: reponse = mid(texte, position_debut_prefixe + len(i[0]), position_debut_suffixe - position_debut_prefixe - len(i[0])) break #Enlever s'il y a une virgule après le nom #On ne fait pas un replace car il peut y avoir des virgules valides dans le nom du fournisseur if reponse: reponse = reponse.strip() #Le strip() ne semble pas fonctionner if right(reponse, 1) == ",": reponse = left(reponse, len(reponse) - 1) if right(reponse, 2) == ", ": reponse = left(reponse, len(reponse) - 2) return reponse
type_contrat, huis_clos, STATUT, source, DATE_TRAITEMENT]) #Indiquer que le traitement est terminé afficher_statut_traitement("Traitement termimé odj2contrats") REPERTOIRE_TXT = "C:\\ContratsOuvertsMtl\\Ordres_du_jour\\TXT" FICHIER_FOURNISSEUR = "C:\\ContratsOuvertsMtl\\fournisseurs.csv" #Emplacement du fichier de la liste des founisseurs DATE_RENCONTRE = "2015-09-01" #À changer PREFIXE_DECISION = "20." STATUT = "Ordre du jour présenté" #À changer au besoin DATE_TRAITEMENT = left(str(datetime.datetime.today()),19) #Date à laquelle le traitement des contrats a été faite #Arranger le format AAAA-MM-JJ def main(): #a_verifier : instance, # lien de la page web # abréviation a_verifier = [ ["CE", "CE", "", "http://ville.montreal.qc.ca/sel/adi-public/afficherpdf/fichier.pdf?typeDoc=odj&doc=7301", ] ]
def informer_nouveaux_contrats(a_verifier): message = "" CONTRATS_TRAITES = "C:\\ContratsOuvertsMtl\\contrats_traites.csv" # 0 instance # 1 date_rencontre # 2 no_decision # 3 titre # 4 no_dossier # 5 instance_reference # 6 no_appel_offres # 7 nbr_soumissions # 8 pour # 9 texte_contrat # 10 fournisseur # 11 montant # 12 type_contrat # 13 huis_clos # 14 source # 15 date_traitement afficher_statut_traitement("Début du traitement informer_nouveaux_contrats") with open(CONTRATS_TRAITES, "r", encoding = "utf-8", ) as f: reader = csv.reader(f, delimiter = ";") for ligne in reader: #Ne pas considérer la 1re ligne du nom des champs if "instance" not in ligne: instance = ligne[0] date_rencontre = ligne[1] no_decision = ligne[2] titre = ligne[3] no_dossier = ligne[4] instance_reference = ligne[5] no_appel_offres = ligne[6] nbr_soumissions = ligne[7] pour = ligne[8] texte_contrat = ligne[9] fournisseur = ligne[10] montant = ligne[11] type_contrat = ligne[12] huis_clos = ligne[13] source = ligne[14] date_traitement = ligne[15] #S'il y a un montant, un fournisseur, un tire et le texte du contrat if montant and fournisseur and titre and texte_contrat: message = instance + " " + right(date_rencontre,5) + "|" + formatter_montant(montant) + " à " + fournisseur + "|" + titre + "|" + texte_contrat #S'il y a un montant et un fournisseur if montant and fournisseur and texte_contrat: message = instance + " " + right(date_rencontre,5) + "|" + formatter_montant(montant) + " à " + fournisseur + "|" + texte_contrat #Il y a seulement un fournisseur elif fournisseur and not titre and not montant and texte_contrat: message = instance + " " + right(date_rencontre,5) + "|Contrat à " + fournisseur + "|" + texte_contrat #Décision en huis clos elif "huis clos" in titre: message = instance + " " + right(date_rencontre,5) + "|Décision " + no_decision + " prise en huis clos." + "|" + texte_contrat else: message = instance + " " + right(date_rencontre,5) + "|" + texte_contrat if message and len(message) > 128: message = left(message, 128) + "..." message = message + " #polmtl" message = message.strip() if message is not " #polmtl" or right(message,9) is not ". #polmtl": print("----") print(message) envoyer_twit(message) afficher_statut_traitement("Fin du traitement informer_nouveaux_contrats")
def informer_nouveaux_contrats(a_verifier): message = "" CONTRATS_TRAITES = "C:\\ContratsOuvertsMtl\\contrats_traites.csv" # 0 instance # 1 date_rencontre # 2 no_decision # 3 titre # 4 no_dossier # 5 instance_reference # 6 no_appel_offres # 7 nbr_soumissions # 8 pour # 9 texte_contrat # 10 fournisseur # 11 montant # 12 type_contrat # 13 huis_clos # 14 source # 15 date_traitement afficher_statut_traitement( "Début du traitement informer_nouveaux_contrats") with open( CONTRATS_TRAITES, "r", encoding="utf-8", ) as f: reader = csv.reader(f, delimiter=";") for ligne in reader: #Ne pas considérer la 1re ligne du nom des champs if "instance" not in ligne: instance = ligne[0] date_rencontre = ligne[1] no_decision = ligne[2] titre = ligne[3] no_dossier = ligne[4] instance_reference = ligne[5] no_appel_offres = ligne[6] nbr_soumissions = ligne[7] pour = ligne[8] texte_contrat = ligne[9] fournisseur = ligne[10] montant = ligne[11] type_contrat = ligne[12] huis_clos = ligne[13] source = ligne[14] date_traitement = ligne[15] #S'il y a un montant, un fournisseur, un tire et le texte du contrat if montant and fournisseur and titre and texte_contrat: message = instance + " " + right( date_rencontre, 5 ) + "|" + formatter_montant( montant ) + " à " + fournisseur + "|" + titre + "|" + texte_contrat #S'il y a un montant et un fournisseur if montant and fournisseur and texte_contrat: message = instance + " " + right( date_rencontre, 5) + "|" + formatter_montant( montant ) + " à " + fournisseur + "|" + texte_contrat #Il y a seulement un fournisseur elif fournisseur and not titre and not montant and texte_contrat: message = instance + " " + right( date_rencontre, 5) + "|Contrat à " + fournisseur + "|" + texte_contrat #Décision en huis clos elif "huis clos" in titre: message = instance + " " + right( date_rencontre, 5 ) + "|Décision " + no_decision + " prise en huis clos." + "|" + texte_contrat else: message = instance + " " + right(date_rencontre, 5) + "|" + texte_contrat if message and len(message) > 128: message = left(message, 128) + "..." message = message + " #polmtl" message = message.strip() if message is not " #polmtl" or right(message, 9) is not ". #polmtl": print("----") print(message) envoyer_twit(message) afficher_statut_traitement("Fin du traitement informer_nouveaux_contrats")