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
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  
def get_data():
    train = pd.read_csv("../public/train.csv")

    entbase_ = entbase()
    train = merge(train, entbase_)
    print("basic done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del entbase_

    alter_ = alter()
    train = merge(train, alter_)
    print("alter done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del alter_

    branch_ = branch()
    train = merge(train, branch_)
    print("branch done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del branch_

    invest_ = invest()
    train = merge(train, invest_)
    print("invest done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del invest_

    right_ = right()
    train = merge(train, right_)
    print("right done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del right_

    project_ = project()
    train = merge(train, project_)
    print("project done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del project_

    lawsuit_ = lawsuit()
    train = merge(train, lawsuit_)
    print("lawsuit done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del lawsuit_

    breakfaith_ = breakfaith()
    train = merge(train, breakfaith_)
    print("breakfaith done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del breakfaith_

    recruit_ = recruit()
    train = merge(train, recruit_)
    print("recruit done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del recruit_

    qualification_ = qualification()
    train = merge(train, qualification_)
    print("qualification done in " +
          datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    del qualification_

    return train
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")
Exemple #5
0
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")