diff --git a/README.md b/README.md index 37d8eab..abf16f7 100644 --- a/README.md +++ b/README.md @@ -24,5 +24,5 @@ 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' + - Une fois terminé, un fichier de rapport 'VISA_DORY_PRE.xlsx' est créé - 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.xlsx b/modele_VISA_DORY.xlsx index aee09ac..c44e3f0 100644 Binary files a/modele_VISA_DORY.xlsx and b/modele_VISA_DORY.xlsx differ diff --git a/script_pre_traitement_dory.py b/script_pre_traitement_dory.py index ec1a3b2..e789c61 100644 --- a/script_pre_traitement_dory.py +++ b/script_pre_traitement_dory.py @@ -4,28 +4,11 @@ -import os # getcwd(), +import os # getcwd(), walk() import openpyxl # gestion et manipulation de fichier Open XML +import re # RegEx -## 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 - - - -# - une liste des extensions nécessaires -NECESSAIRES = ["cpg", "dbf", "prj", "shp", "shx"] - -# - une liste des extentions auxiliaires -AUXILIAIRES = ["qix", "qmd", "qml"] - -# - la configuration de la feuille Excel -CONFIG = {"NOM" : "A5", - "TYPE" : "B5", - "NB_FICHIERS" : "C5", - "ENCODAGE" : "D5", - "PROJECTION" : "E5", - "VALIDITE" : "F5"} - # REPRESENTATION DES DONNEES @@ -180,7 +163,12 @@ class _Projet: df = open(self.necessaires["prj"].chemin) chaine = df.readline() df.close() - if "Lambert_93" in chaine: + #cherche le motif : "Ligne qui commence par PROJCS[" + # puis suivi de caracteres + #puis suivi de Lambert_93" + motif = re.findall('^PROJCS[[]".*Lambert_93"', chaine) + print("motif = ", motif) + if motif: self.projection = "LAMBERT93" else: print(projet.nom, " : pas de PRJ trouvé --> pas de projection définie") @@ -194,7 +182,6 @@ class _Projet: if "cpg" in self.necessaires: df = open(self.necessaires["cpg"].chemin) chaine = df.readline() - #print("encod lu : ", chaine) df.close() if "UTF-8" in chaine: self.encodage = "UTF8" @@ -295,14 +282,14 @@ print("Racine : ".center(18), racine) pas_de_dossier = True for a in os.scandir(): - if a.is_dir(): + #si 'a' est un dossier et n'est pas un dossier de la liste ci dessous + if a.is_dir() and a.name not in ["Travail", "Livraison", ".git"]: #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() @@ -334,7 +321,7 @@ for dossier_courant, list_sousdossiers, list_fichiers in os.walk(racine): #TEST affichage de la liste de fichier # initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs -print("Init Dico\n") +print("Init Dictionnaire des Projets\n") dico = {} # Pour Chaque fichier de la liste Faire for fichier_courant in liste: @@ -353,9 +340,6 @@ for fichier_courant in liste: # ajouter le nom comme clé dans le dictionnaire # associer le projet à cette clé dico[projet.nom] = projet - - #test contenu du dico - # Fin Si # cataloguer le fichier dans le projet concerné projet.cataloguer(fichier_courant) @@ -384,23 +368,20 @@ for projet in dico.values(): # /* Ici le dictionnaire des _Projets doit être correctement remplie */ - -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 # écrire les nom des colonnes # écrire les formules de colorations auto des colonnes +cell = feuille["A2"] +cell.value = "Dossier : "+ racine.name # Pour chaque projet du dictionnaire Faire ligne_courante = 4 for nom_projet, projet in dico.items(): @@ -448,13 +429,38 @@ print("ligne_courante = ", ligne_courante ) # --produire le dossier de mise à disposition # créer un dossier "Travail" et un dossier "Livraison" +try: + os.mkdir("Travail") +except FileExistsError as erreur: + print(erreur) +#os.mkdir("Livraison") # --créer l'arborescence du dossier "Travail" # le dossier Travail devient le working directory # créer un dossier "00-Cadastre" +try: + os.mkdir("Travail\\00-Cadastre") +except FileExistsError as erreur: + print(erreur) # créer un dossier "01-Donnees_Valides" +try: + os.mkdir("Travail\\01-Donnees_Valides") +except FileExistsError as erreur: + print(erreur) # créer un dossier "02-Donnees_Invalides +try: + os.mkdir("Travail\\02-Donnees_Invalides") +except FileExistsError as erreur: + print(erreur) # créer un dossier "03-Production" +try: + os.mkdir("Travail\\03-Production") +except FileExistsError as erreur: + print(erreur) # créer un dossier "04-Verif_Geometrie" +try: + os.mkdir("Travail\\04-Verif_Geometrie") +except FileExistsError as erreur: + print(erreur) # --peupler le dossier "Travail" # Pour Chaque projet du dictionnaire Faire # copier les fichiers des projets conforme dans le dossier "01" @@ -464,12 +470,3 @@ print("ligne_courante = ", ligne_courante ) # /* Ici les dossiers doivent être correctement produit et remplie */ # ARRET DU PROGRAMME - - - -# /* TODO Controler qu'il y a bien les 5 necessaires par projet sinon FAIL - # --> a faire dans le controle de conformité de chaque projet */ - -# /* TODO S'assurer que les GPKG et autres non conformes peuplent correctement - # les infos dans les projets --> géré si l'initialisation des - # projets est correctement fait */