Ajout input de confirmation (Y/N) de la saisi.

This commit is contained in:
David Castex 2025-09-11 14:09:49 +02:00
parent 3c64b98a5c
commit 326aecdfdf
2 changed files with 26 additions and 44 deletions

View File

@ -487,17 +487,22 @@ def saisir_annee_topo():
Retourne la valeur saisi. Retourne la valeur saisi.
""" """
print("\nVeuillez saisir l'année de la date du relevé topographique.") print("\nVeuillez saisir l'année de la date du relevé géo référencé.")
print("Pour cela ouvrez la fiche topo du dossier/sous-dossier original.") print("Pour cela ouvrez le relevé topographique du dossier/sous-dossier original.")
correct = False correct = False
while(not correct): while(not correct):
saisi = input("Saisir 4 chiffres : ") saisi = input("Saisir 4 chiffres (ou 0 pour aucune date) : ")
if saisi in "0": if saisi in "0":
return "" return ""
correct = saisi.isdecimal() and len(saisi) == 4 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 return saisi
@ -777,19 +782,19 @@ def preparer_dossier_travail(projet):
if projet.nb_dwgs <= 1 : if projet.nb_dwgs <= 1 :
dest = f"{dossierDWGs}\\{dossier}_Plan_{annee_topo}" dest = f"{dossierDWGs}\\{dossier}_Plan_{annee_topo}"
else : else :
dest = f"{dossierDWGs}\\{dossier}_IN_Points_{annee_topo}_{letterDWG}" dest = f"{dossierDWGs}\\{dossier}_Plan_{annee_topo}_{letterDWG}"
letterDWG = chr(ord(letterDWG)+1) letterDWG = chr(ord(letterDWG)+1)
case "SHEMAS": case "SHEMAS":
if projet.nb_shemas <= 1 : if projet.nb_shemas <= 1 :
dest = f"{dossierPDFs}\\{dossier}_Plan_{annee_topo}" dest = f"{dossierPDFs}\\{dossier}_Plan_{annee_topo}"
else : else :
dest = f"{dossierPDFs}\\{dossier}_IN_Points_{annee_topo}_{letterSHEMAS}" dest = f"{dossierPDFs}\\{dossier}_Plan_{annee_topo}_{letterSHEMAS}"
letterSHEMAS = chr(ord(letterSHEMAS)+1) letterSHEMAS = chr(ord(letterSHEMAS)+1)
case "TOPO": case "TOPO":
if projet.nb_releves <= 1 : if projet.nb_releves <= 1 :
dest = f"{dossierTOPOs}\\{dossier}_Infos_{annee_topo}" dest = f"{dossierTOPOs}\\{dossier}_Infos_{annee_topo}"
else : else :
dest = f"{dossierTOPOs}\\{dossier}_IN_Points_{annee_topo}_{letterTOPO}" dest = f"{dossierTOPOs}\\{dossier}_Infos_{annee_topo}_{letterTOPO}"
letterTOPO = chr(ord(letterTOPO)+1) letterTOPO = chr(ord(letterTOPO)+1)
case _: case _:
pass # TODO: voir pour les autres cas, normalement il n'y en a pas pour le moment 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é") print("" + fichier.nom.ljust(40,".") + "copié")
except shutil.SameFileError as err : except shutil.SameFileError as err :
print(f"Le fichier existe déjà.") 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): def controler_longueur_noms(projet):
@ -994,13 +995,6 @@ def lire_et_controler_ligne(projet, ligne):
return ligne return ligne
def remplir(modele, projet): def remplir(modele, projet):
""" """
Complète le Visa du projet à partir d'un fichier modele. 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}." FRONT['C10'].value = f"Taille totale : {taille:.2f} {unite}."
# TODO: factoriser les instructions ci dessous (pas sur...) # TODO: factoriser les instructions ci dessous (pas sur...)
### FRONT DWG ### FRONT DWG
# Je ne peux pas controler automatiquement la projection du DWG (c'est un binaire illisible hors de AutoCAD) # 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. # 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['B3'].value = "OK"
### FRONT PDF ### FRONT PDF
FRONT['C4'].value = f"{projet.nb_shemas} fichier(s) PDF présent(s)." 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['B4'].value = "OK"
### FRONT CSV ### FRONT CSV
FRONT['C5'].value = f"1 fichier(s) CSV présent(s).\n{projet.nb_points} point(s) en RFG93-CC43 (EPSG:3943)." 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['B5'].value = "OK"
# FRONT FICHE INFO TOPOLOGIE # FRONT FICHE INFO TOPOLOGIE
FRONT['C6'].value = f"{projet.nb_releves} fiche(s) Info. présente(s)." 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" FRONT['B6'].value = "OK"
# Notifier dans les autres Feuilles # Notifier dans les autres Feuilles
# lignes en cours à remplir pour chaque feuille # lignes en cours à remplir pour chaque feuille
@ -1254,9 +1240,5 @@ controler_longueur_noms(ce_Projet)
remplir(MODELE, ce_Projet) remplir(MODELE, ce_Projet)
#Fin de Programme Attendu #Fin de Programme Attendu
print("\nProgramme terminé correctement. ") print("\nProgramme terminé correctement. ")

View File

@ -73,29 +73,29 @@ Lignes :
- 172-245 : Représentation d'un fichier. - 172-245 : Représentation d'un fichier.
- 251-256 : Représentation d'une notification. - 251-256 : Représentation d'une notification.
- 266-328 : Fonction importante qui controle la validité des coordonnées d'un point géographique. - 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) - 333-506 : Fonctions E/S sur des chaines de caractères (ex: formater un nom suivant une nomenclature donné, etc)
- 511-595 : Représentation du projet. - 516-604 : Représentation du projet.
- 608-663 : Fonctions pour obtenir des elements d'environnement pour le projet : date, nom du dossier, etc. - 608-672 : 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. - 675-813 : 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. - 816-836 : Fonction qui controle la longueur des noms de fichier.
- 833-990 : Fonctions importantes qui formate le fichier CSV. - 838-995 : Fonctions importantes qui formate le fichier CSV.
- 1004-1169 : Fonction qui génère le Visa de controle. - 998-1155 : Fonction qui génère le Visa de controle.
#### 4. Exécution du programme #### 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. >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) - 1195-1205 : 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. - 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.
- 1225 : calcule la taille **seulement** des fichiers qui vont être copiés dans le dossier de Travail. - 1211 : 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. - 1215 : 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 : - 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. - analysée, on vérifie de sa projection.
- formatée, on corrige certains défauts de syntaxe. Les lignes vides, etc. - 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. - 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 1235 : 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 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 🚧🛂 ### 🛂🚧 Les points de controles réalisés 🚧🛂