From c079c9270f2ddbf5353a071347846cef1932847c Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Tue, 14 Jan 2020 19:10:53 +0100 Subject: [PATCH] fixed read, cread, cancel numbers --- mondumas/models/dossier.py | 7 +- mondumas/routes.py | 2 + mondumas/templates/default/affiche_message.pt | 18 +++++ mondumas/views/default.py | 19 ++++- mondumas/views/dossier.py | 77 ++++++++++++++----- 5 files changed, 101 insertions(+), 22 deletions(-) create mode 100644 mondumas/templates/default/affiche_message.pt diff --git a/mondumas/models/dossier.py b/mondumas/models/dossier.py index e5d734f..e04ee88 100644 --- a/mondumas/models/dossier.py +++ b/mondumas/models/dossier.py @@ -126,7 +126,7 @@ def insert_suivi(request, nodossier, comment): query = """ INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES - (:societe, :no_id, CURRENT_DATE(), :comment, 'AUTO');""" + (:societe, :no_id, CURRENT_DATE(), :comment, 'MAIL');""" execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment}) def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE): @@ -302,3 +302,8 @@ def get_experts(request, code_cab, code_exp): query = "SELECT * FROM p_experts where code_cab = :code_cab AND code_exp = :code_exp;" results = request.dbsession.execute(query, {'code_cab': code_cab, 'code_exp': code_exp}).first() return results + +def insert_log_nuit(request, proc, msg): + query = "INSERT INTO t_log_nuit (proc,msg) VALUES (:proc, :msg);" + execute_query(request, query, {'proc': proc, 'msg': msg}) + diff --git a/mondumas/routes.py b/mondumas/routes.py index d130033..0e1f987 100644 --- a/mondumas/routes.py +++ b/mondumas/routes.py @@ -6,9 +6,11 @@ def includeme(config): config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}') # default config.add_route('home', '/') + config.add_route('affiche_message','/affiche_message/{login}') config.add_route('changer_mdp', '/changer_mdp') config.add_route('envoyer_mdp', '/envoyer_mdp') config.add_route('login', '/login') + config.add_route('login_as', '/login_as/{login}') config.add_route('logout', '/logout') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') config.add_route('init_mdp', '/init_mdp/{user}/{lien}') diff --git a/mondumas/templates/default/affiche_message.pt b/mondumas/templates/default/affiche_message.pt new file mode 100644 index 0000000..309d8fd --- /dev/null +++ b/mondumas/templates/default/affiche_message.pt @@ -0,0 +1,18 @@ + + +
+
+

${structure:message}

+
+

+
+ Se connecter à mon compte +

+

+
+
+
+ +
diff --git a/mondumas/views/default.py b/mondumas/views/default.py index a404dfc..8576403 100644 --- a/mondumas/views/default.py +++ b/mondumas/views/default.py @@ -101,8 +101,8 @@ Le lien suivant vous dirigera vers une page où vous pourrez ré-initialiser vot """ % (request.route_url('redefinir_mdp', lien=lien)) envoyerMail(request, member.email, "Demande de ré-initialisation du mot de passe", body) - request.session.flash("Votre demande de ré-initialisation de mot de passe vous a été envoyée à %s." % member.email) - return HTTPFound(location=request.route_url('login')) + request.session.flash("Le lien permettant de redéfinir votre mot de passe vous a été envoyé à l'adresse : %s." % member.email, 'success') + return HTTPFound(location=request.route_url('affiche_message', login=login)) else: message = "Le mot de passe fourni est incorrect." return { @@ -177,6 +177,7 @@ def redefinir_mdp(request): @view_config(route_name='login', renderer='../templates/default/login.pt', permission='view') +@view_config(route_name='login_as', renderer='../templates/default/login.pt', permission='view') @forbidden_view_config(renderer='../templates/default/login.pt') def login(request): @@ -249,3 +250,17 @@ gestion.entreprise-dumas.com mailer.send_immediately(message) +@view_config(route_name='affiche_message', renderer='../templates/default/affiche_message.pt') +def affiche_message(request): + + login = request.matchdict['login'] + messages = request.session.pop_flash() + + return { + 'page_title': "Demande effectuée", + 'login': login, + 'messages' : messages, + 'url_identification': request.route_url('login_as', login=login) + } + + diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index 2677798..a5c24f2 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -780,16 +780,22 @@ def demandes(request): # extraction OK ? oui, créer une dem_devis et récupèrer son no_id if dem_info['c_nom'] != '': + nosin = dem_info['no_sinistre'] nochantier = insert_dossier(request, societe, cd_cli, dem_info['c_nom'], dem_info['c_adr'], dem_info['c_adr2'], \ - dem_info['c_cp'], dem_info['c_ville'], dem_info['c_telp'], dem_info['no_sinistre'], dem_info['c_obs'], dem_info['tx_trav']) + dem_info['c_cp'], dem_info['c_ville'], dem_info['c_telp'], nosin, dem_info['c_obs'], dem_info['tx_trav']) 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) tempFile2Dossier(request, societe, nochantier, '0', temp_file_path, filename, 'EMAIL') - - return + # log de nuit + insert_log_nuit(request, 'GENERER', '--> CREER DOSSIER sinistre %s - MAIF : No %s' % (nosin, nodossier)) + traite = 1 + else: + traite = 0 + + return traite def generer_annul_maif(request, societe, extracted_file, temp_file_path): # extraire les infos de la demmande MAIF @@ -809,7 +815,13 @@ def demandes(request): tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', temp_file_path, filename, 'EMAIL') # insérer une ligne de suivi ANNULATION insert_suivi(request, nodossier, '!!MISSION ANNULEE PAR la MAIF') - return + # log de nuit + insert_log_nuit(request, 'GENERER', '--> ANNULATION DOSSIER sinistre %s - MAIF : %s' % (nosin, nodossier)) + traite = 1 + else: + traite = 0 + + return traite def generer_annul_domus(request, societe, nosin, temp_file_path): # import pdb;pdb.set_trace() @@ -823,13 +835,22 @@ def demandes(request): tempFile2Dossier(request, societe, dem_devis.NO_ID, '0', temp_file_path, filename, 'EMAIL') # insérer une ligne de suivi ANNULATION insert_suivi(request, nodossier, '!!MISSION ANNULEE PAR DOMUS') - return + # log de nuit + insert_log_nuit(request, 'GENERER','--> ANNULATION DOSSIER sinistre %s - DOMUS : %s' % (nosin, nodossier)) + traite = 1 + else: + traite = 0 + + return traite # connecter au serveur de mail conn = mailbox_connect(societe) # select INBOX rv, data = conn.select('INBOX', readonly =True) + nbLus = 0 + nbCrees = 0 + nbAnnules = 0 for criteria in search_criteria: # rechercher les emails de demandes dans le INBOX rv, data = conn.search(None, criteria) @@ -838,7 +859,6 @@ def demandes(request): return HTTPFound(location=request.route_url('home')) mail_ids = data[0] - nbMessages = len(mail_ids) for num in mail_ids.split(): rv, msg_data = conn.fetch(num, '(RFC822)') if rv != 'OK': @@ -866,22 +886,26 @@ def demandes(request): # convertir le fichier pdf en texte texte, extracted_file = pdf_convert_to_txt(temp_file_path) + nbLus = nbLus + 1 # mission annulée ? if 'Objet : ANNULATION MISSION' in texte : # genere ANNULATION mission MAIF # import pdb;pdb.set_trace() - generer_annul_maif(request, societe, extracted_file, temp_file_path) + n = generer_annul_maif(request, societe, extracted_file, temp_file_path) + nbAnnules = nbAnnules + n # conn.store(num, '+FLAGS', r'(\Deleted)') elif 'ANNULATION ORDRE DE MISSION' in texte: # genere ANNULATION mission DOMUS nosin = str(body)[84:95] # import pdb;pdb.set_trace() - generer_annul_domus(request, societe, nosin, temp_file_path) + n = generer_annul_domus(request, societe, nosin, temp_file_path) + nbAnnules = nbAnnules + n # conn.store(num, '+FLAGS', r'(\Deleted)') else: # genere le dossier d'après le mail # import pdb;pdb.set_trace() - generer_mission(request, societe, criteria, extracted_file, temp_file_path) + n = generer_mission(request, societe, criteria, extracted_file, temp_file_path) + nbCrees = nbCrees + n # marquer le message comme supprimé # conn.store(num, '+FLAGS', r'(\Deleted)') @@ -889,8 +913,8 @@ def demandes(request): conn.close() # deconnexion du serveur conn.logout() - - return nbMessages + + return nbLus, nbCrees, nbAnnules # ------- main ------- @@ -901,17 +925,26 @@ def demandes(request): societes = ['PE','ME','PL'] # critères de recherche des demandes d'interventions de la MAIF - # search_criteria = ['FROM service.sinistres@domus-services.fr SUBJECT "Ordre de mission DOMUS - Dossier"'] + # search_criteria = ['FROM service.sinistres@domus-services.fr SUBJECT "Ordre de mission DOMUS - Dossier"'] " search_criteria = ['FROM gestionsinistre@maif.fr SUBJECT "Intervention entreprise partenaire"', - 'FROM service.sinistres@domus-services.fr SUBJECT "Ordre de mission DOMUS - Dossier"'] + 'FROM service.sinistres@domus-services.fr SUBJECT "Ordre de mission DOMUS - Dossier"'] if 'form.submitted' in request.params: # traiter les demandes de la MAIF puis de DOMUS pour toutes les sociétes - nbMessages = 0 + nbLus = 0 + nbCrees = 0 + nbAnnules = 0 + # log de nuit + insert_log_nuit(request, 'GENERER','- Début GENERATION des dossiers à partir des EMAILS') for societe in societes: - nb = demandes_generer(request, societe, search_criteria) - nbMessages = nbMessages + nb - message = "%s demandes de devis a été crées." % nbMessages + nLus, nCrees, nAnnules = demandes_generer(request, societe, search_criteria) + nbLus = nbLus + nLus + nbCrees = nbCrees + nCrees + nbAnnules = nbAnnules + nAnnules + + # log de nuit + insert_log_nuit(request, 'GENERER','- Fin GENERATION : %s emails traités, %s dossiers créés, %s dossiers annulés' % (nbLus, nbCrees, nbAnnules)) + message = "%s emails ont été traités." % nbLus liste=[] # lister les demandes par societe @@ -1047,8 +1080,14 @@ def get_pdf_infos1(extracted_file): line = fp.readline() no_sinistre = line[:-1] if line.find('Bénéficiaire des travaux :') == 0: - elt = line.split(' : ') - c_nom = elt[1][:-1] + elt = line[-1].split(' :') + if len(elt) == 1: + # le nom du chantier est sur la ligne suivante + line = fp.readline() + c_nom = line[-1] + else: + # le nom du chantier est sur la même ligne + c_nom = elt[1][:-1] line = fp.readline() line = fp.readline() line = fp.readline()