diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7f17dd --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Fichiers exclus du suivi de version +VISA_DORY_PRE.xlsx + +#Dossier exclu du suivi de version +TEST/ \ No newline at end of file diff --git a/README.md b/README.md index f5428f5..37d8eab 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,14 @@ NOTES : David. + + + + +MODE D'EMPLOI + + - Dans un dossier, copier les fichiers 'script_pretraitement_dory.py' et 'modele_VISA_DORY.xlsx' + - Dans ce dossier, copier l'archive a traiter (ex: Riverie.zip) et décompresser l'archive + - executer le script : Clic Droit --> Ouvrir avec ... --> Idle.exe. Puis F5 pour le démarrer + - Une fois terminé, un fichier de rapport 'VISA_DORY_PRE.xlsx' + - L'arborescence des dossiers est aussi créé (EN COURS: les dossiers ne sont pas encore créés) \ No newline at end of file diff --git a/modele_VISA_DORY.ods b/modele_VISA_DORY.ods deleted file mode 100644 index 122eaea..0000000 Binary files a/modele_VISA_DORY.ods and /dev/null differ diff --git a/modele_VISA_DORY.xlsx b/modele_VISA_DORY.xlsx new file mode 100644 index 0000000..aee09ac Binary files /dev/null and b/modele_VISA_DORY.xlsx differ diff --git a/script_pre_traitement_dory.py b/script_pre_traitement_dory.py index f314f43..ec1a3b2 100644 --- a/script_pre_traitement_dory.py +++ b/script_pre_traitement_dory.py @@ -5,6 +5,7 @@ import os # getcwd(), +import openpyxl # gestion et manipulation de fichier Open XML ## TODO : voir le pb des dicos qui auraient plusieurs fois les memes clés (se qui n'est pas possible) à cause de plusieurs fichiers qui auraient la meme extension @@ -130,8 +131,8 @@ class _Projet: non_conformes = {}, nb_fichiers=0, conformite="Non conforme", - projection="Pas de projection", - encodage="Pas d'encodage"): + projection="Inconnu", + encodage="Inconnu"): self.nom = nom # - son nom - string self.necessaires = necessaires self.auxiliaires = auxiliaires @@ -173,13 +174,13 @@ class _Projet: """Récupère la projection des données géomatiques définie. Lis la première ligne du fichier *.PRJ du projet - et controle la présence de la chaine "RGF_1993_Lambert_93" + et controle la présence de la chaine "Lambert_93" """ if "prj" in self.necessaires: df = open(self.necessaires["prj"].chemin) chaine = df.readline() df.close() - if "RGF_1993_Lambert_93" in chaine: + if "Lambert_93" in chaine: self.projection = "LAMBERT93" else: print(projet.nom, " : pas de PRJ trouvé --> pas de projection définie") @@ -297,14 +298,13 @@ for a in os.scandir(): if a.is_dir(): #il y a un dossier pas_de_dossier = False + print(f"Dossier à Traiter trouvé : {a.name}") + racine = a if pas_de_dossier: print("Pas de dossier trouvé...\nFin de programme\n") os.system("pause") # fin du programme exit() -else: - print(f"Dossier à Traiter trouvé : {a.name}") - racine = a # --analyser le dossier @@ -389,6 +389,12 @@ os.system("pause") # --produire le rapport # créer un classeur Excel + # TODO pour le moment je vais partir sur un modele deja ecrit que j'ouvre + # Contrainte : l'opérateur doit placer le modèle dans le même dossier racine que le present script +classeur = openpyxl.load_workbook("modele_VISA_DORY.xlsx") +feuille = classeur.active + + # /* Note : peut être utiliser un modèle pré-config */ # --mettre en page la première feuille du classeur # inserer une image @@ -396,21 +402,49 @@ os.system("pause") # écrire les formules de colorations auto des colonnes # Pour chaque projet du dictionnaire Faire +ligne_courante = 4 +for nom_projet, projet in dico.items(): # --completer la feuille avec les infos du projet courant # /* Note : Chaque ligne de la feuille correspond à un projet */ # /* Utiliser la config fournie en Constante */ # écrire le nom du projet + cell = feuille["A"+str(ligne_courante)] + cell.value = nom_projet + print(cell.value) # écrire le type d'extention + cell = feuille["B"+str(ligne_courante)] + if "shp" in projet.necessaires: # /* Note : ce sera "SHP" pour les projets conformes et le type # natif pour les non-conformes */ + cell.value = "SHP" + else: + for extension in projet.non_conformes: + cell.value = extension.upper() + print(cell.value) # écrire le nombre de fichiers du projet + cell = feuille["C"+str(ligne_courante)] + cell.value = projet.nb_fichiers # écrire l'encodage + cell = feuille["D"+str(ligne_courante)] + cell.value = projet.encodage # écrire la projection + cell = feuille["E"+str(ligne_courante)] + cell.value = projet.projection # écrire la validité (conformité) + cell = feuille["F"+str(ligne_courante)] + if projet.conformite in "Conforme": + cell.value = "OK" + else: + cell.value = "FAIL" + + ligne_courante+= 1 + # encadrer le "tout" pour délimiter le tableau de la feuille # Fin Pour # /* Ici le rapport doit être correctement produit et remplie */ +classeur.save("VISA_DORY_PRE.xlsx") +print("ligne_courante = ", ligne_courante ) # --produire le dossier de mise à disposition # créer un dossier "Travail" et un dossier "Livraison"