From dde2b3995825802e0fcadb7cead033b49544627f Mon Sep 17 00:00:00 2001 From: David Castex Date: Fri, 7 Mar 2025 08:07:07 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20cr=C3=A9ation=20dossier=20et=20modif=20?= =?UTF-8?q?modele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- modele_VISA_DORY.xlsx | Bin 7076 -> 6860 bytes script_pre_traitement_dory.py | 79 ++++++++++++++++------------------ 3 files changed, 39 insertions(+), 42 deletions(-) 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 aee09ac2b6f0d988a306b28be241f6a251526dec..c44e3f080ec77ca02bb855b44642c48f14ab97c2 100644 GIT binary patch delta 3922 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 AmH+?% delta 4178 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 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 */