From 326aecdfdf77b77b07d1d039e347b4da0bd423f6 Mon Sep 17 00:00:00 2001 From: David Castex Date: Thu, 11 Sep 2025 14:09:49 +0200 Subject: [PATCH] Ajout input de confirmation (Y/N) de la saisi. --- NEOBANBOU.py | 42 ++++++++++++------------------------------ README.md | 28 ++++++++++++++-------------- 2 files changed, 26 insertions(+), 44 deletions(-) diff --git a/NEOBANBOU.py b/NEOBANBOU.py index c11775f..55ff80f 100644 --- a/NEOBANBOU.py +++ b/NEOBANBOU.py @@ -487,17 +487,22 @@ def saisir_annee_topo(): Retourne la valeur saisi. """ - print("\nVeuillez saisir l'année de la date du relevé topographique.") - print("Pour cela ouvrez la fiche topo du dossier/sous-dossier original.") + print("\nVeuillez saisir l'année de la date du relevé géo référencé.") + print("Pour cela ouvrez le relevé topographique du dossier/sous-dossier original.") correct = False while(not correct): - saisi = input("Saisir 4 chiffres : ") + saisi = input("Saisir 4 chiffres (ou 0 pour aucune date) : ") if saisi in "0": return "" correct = saisi.isdecimal() and len(saisi) == 4 - + + # Confirmation demandé + confirm = input(f"{saisi} : Etes vous sur (Y/N) ? ") + if confirm not in ["Y", "y", "O", "o"] : + saisir_annee_topo() + return saisi @@ -777,19 +782,19 @@ def preparer_dossier_travail(projet): if projet.nb_dwgs <= 1 : dest = f"{dossierDWGs}\\{dossier}_Plan_{annee_topo}" else : - dest = f"{dossierDWGs}\\{dossier}_IN_Points_{annee_topo}_{letterDWG}" + dest = f"{dossierDWGs}\\{dossier}_Plan_{annee_topo}_{letterDWG}" letterDWG = chr(ord(letterDWG)+1) case "SHEMAS": if projet.nb_shemas <= 1 : dest = f"{dossierPDFs}\\{dossier}_Plan_{annee_topo}" else : - dest = f"{dossierPDFs}\\{dossier}_IN_Points_{annee_topo}_{letterSHEMAS}" + dest = f"{dossierPDFs}\\{dossier}_Plan_{annee_topo}_{letterSHEMAS}" letterSHEMAS = chr(ord(letterSHEMAS)+1) case "TOPO": if projet.nb_releves <= 1 : dest = f"{dossierTOPOs}\\{dossier}_Infos_{annee_topo}" else : - dest = f"{dossierTOPOs}\\{dossier}_IN_Points_{annee_topo}_{letterTOPO}" + dest = f"{dossierTOPOs}\\{dossier}_Infos_{annee_topo}_{letterTOPO}" letterTOPO = chr(ord(letterTOPO)+1) case _: pass # TODO: voir pour les autres cas, normalement il n'y en a pas pour le moment @@ -806,10 +811,6 @@ def preparer_dossier_travail(projet): print("" + fichier.nom.ljust(40,".") + "copié") except shutil.SameFileError as err : print(f"Le fichier existe déjà.") - #TODO : - # Confirmation par Audrey qu'il n'y a necessairement qu'un fichier CSV par projet --> On peut le renommer. - # Mais parfois il peut y avoir plusieurs DWGs dont un seul est utile --> PASS -- Je laisse l'opérateur choisir lequel utiliser et le renommer manuellement. EDIT : Nathalie prefere que tous les fichier DWG soient préfixé avec Plan_ - #TODO : verifier aussi la longueur des noms de fichiers. Notifier si nécessaire def controler_longueur_noms(projet): @@ -994,13 +995,6 @@ def lire_et_controler_ligne(projet, ligne): return ligne - - - - - - - def remplir(modele, projet): """ Complète le Visa du projet à partir d'un fichier modele. @@ -1055,11 +1049,8 @@ def remplir(modele, projet): FRONT['C10'].value = f"Taille totale : {taille:.2f} {unite}." - # TODO: factoriser les instructions ci dessous (pas sur...) - - ### FRONT DWG # Je ne peux pas controler automatiquement la projection du DWG (c'est un binaire illisible hors de AutoCAD) # J'ajoute donc automatiquement la mention comme dans le script précedent. @@ -1079,7 +1070,6 @@ def remplir(modele, projet): FRONT['B3'].value = "OK" - ### FRONT PDF FRONT['C4'].value = f"{projet.nb_shemas} fichier(s) PDF présent(s)." @@ -1097,7 +1087,6 @@ def remplir(modele, projet): FRONT['B4'].value = "OK" - ### FRONT CSV FRONT['C5'].value = f"1 fichier(s) CSV présent(s).\n{projet.nb_points} point(s) en RFG93-CC43 (EPSG:3943)." @@ -1115,7 +1104,6 @@ def remplir(modele, projet): FRONT['B5'].value = "OK" - # FRONT FICHE INFO TOPOLOGIE FRONT['C6'].value = f"{projet.nb_releves} fiche(s) Info. présente(s)." @@ -1133,8 +1121,6 @@ def remplir(modele, projet): FRONT['B6'].value = "OK" - - # Notifier dans les autres Feuilles # lignes en cours à remplir pour chaque feuille @@ -1254,9 +1240,5 @@ controler_longueur_noms(ce_Projet) remplir(MODELE, ce_Projet) - - - - #Fin de Programme Attendu print("\nProgramme terminé correctement. ") \ No newline at end of file diff --git a/README.md b/README.md index 2f78dd8..9bd8e6d 100644 --- a/README.md +++ b/README.md @@ -73,29 +73,29 @@ Lignes : - 172-245 : Représentation d'un fichier. - 251-256 : Représentation d'une notification. - 266-328 : Fonction importante qui controle la validité des coordonnées d'un point géographique. -- 333-502 : Fonctions E/S sur des chaines de caractères (ex: formater un nom suivant une nomenclature donné, etc) -- 511-595 : Représentation du projet. -- 608-663 : Fonctions pour obtenir des elements d'environnement pour le projet : date, nom du dossier, etc. -- 666-808 : Fonction importante qui crée les dossiers nécessaires et copie les fichiers de travail. -- 811-831 : Fonction qui controle la longueur des noms de fichier. -- 833-990 : Fonctions importantes qui formate le fichier CSV. -- 1004-1169 : Fonction qui génère le Visa de controle. +- 333-506 : Fonctions E/S sur des chaines de caractères (ex: formater un nom suivant une nomenclature donné, etc) +- 516-604 : Représentation du projet. +- 608-672 : Fonctions pour obtenir des elements d'environnement pour le projet : date, nom du dossier, etc. +- 675-813 : Fonction importante qui crée les dossiers nécessaires et copie les fichiers de travail. +- 816-836 : Fonction qui controle la longueur des noms de fichier. +- 838-995 : Fonctions importantes qui formate le fichier CSV. +- 998-1155 : Fonction qui génère le Visa de controle. #### 4. Exécution du programme >Note : Le programme principal parait donc très court car il va ensuite faire appel à toutes les autres fonctions vu plus haut. -- 1209-1219 : Le programme commence par créer un Projet et définie des valeurs utiles (date, chemin, etc) -- 1222 : Le programme parcourt le dossier où se trouve le script et analyse tous les fichiers trouvés (quel est son nom, son extension, est-il est utile pour le projet ? ) et stocke toutes ces infos dans une liste pour être utiliser plus tard. -- 1225 : calcule la taille **seulement** des fichiers qui vont être copiés dans le dossier de Travail. -- 1229 : reprend la liste créée et décide des dossiers à créer puis y copie les fichiers attendus. -- 1241-1245 : le fichier CSV contenant les points est lu. Chaque ligne, contenant une coordonnée, est : +- 1195-1205 : Le programme commence par créer un Projet et définie des valeurs utiles (date, chemin, etc) +- 1208 : Le programme parcourt le dossier où se trouve le script et analyse tous les fichiers trouvés (quel est son nom, son extension, est-il est utile pour le projet ? ) et stocke toutes ces infos dans une liste pour être utiliser plus tard. +- 1211 : calcule la taille **seulement** des fichiers qui vont être copiés dans le dossier de Travail. +- 1215 : reprend la liste créée et décide des dossiers à créer puis y copie les fichiers attendus. +- 1227-1231 : le fichier CSV contenant les points est lu. Chaque ligne, contenant une coordonnée, est : - analysée, on vérifie de sa projection. - formatée, on corrige certains défauts de syntaxe. Les lignes vides, etc. - ajoutée à une liste. Cette liste est ensuite écrite dans un fichier. -- ligne 1249 : Le programme controle la longueur de tous les noms de fichiers. -- ligne 1254 : finalement le programme crée un visa à partir d'un modèle, et ajoute toutes les informations nécessaires, ainsi que toutes les notifications sur des points de controles qui ne seraient pas passés. +- ligne 1235 : Le programme controle la longueur de tous les noms de fichiers. +- ligne 1240 : finalement le programme crée un visa à partir d'un modèle, et ajoute toutes les informations nécessaires, ainsi que toutes les notifications sur des points de controles qui ne seraient pas passés. ### 🛂🚧 Les points de controles réalisés 🚧🛂