Ajout création dossier et modif modele
This commit is contained in:
parent
eae1be7470
commit
dde2b39958
@ -24,5 +24,5 @@ MODE D'EMPLOI
|
|||||||
- Dans un dossier, copier les fichiers 'script_pretraitement_dory.py' et 'modele_VISA_DORY.xlsx'
|
- 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
|
- 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
|
- 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)
|
- L'arborescence des dossiers est aussi créé (EN COURS: les dossiers ne sont pas encore créés)
|
||||||
Binary file not shown.
@ -4,28 +4,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
import os # getcwd(),
|
import os # getcwd(), walk()
|
||||||
import openpyxl # gestion et manipulation de fichier Open XML
|
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
|
# REPRESENTATION DES DONNEES
|
||||||
@ -180,7 +163,12 @@ class _Projet:
|
|||||||
df = open(self.necessaires["prj"].chemin)
|
df = open(self.necessaires["prj"].chemin)
|
||||||
chaine = df.readline()
|
chaine = df.readline()
|
||||||
df.close()
|
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"
|
self.projection = "LAMBERT93"
|
||||||
else:
|
else:
|
||||||
print(projet.nom, " : pas de PRJ trouvé --> pas de projection définie")
|
print(projet.nom, " : pas de PRJ trouvé --> pas de projection définie")
|
||||||
@ -194,7 +182,6 @@ class _Projet:
|
|||||||
if "cpg" in self.necessaires:
|
if "cpg" in self.necessaires:
|
||||||
df = open(self.necessaires["cpg"].chemin)
|
df = open(self.necessaires["cpg"].chemin)
|
||||||
chaine = df.readline()
|
chaine = df.readline()
|
||||||
#print("encod lu : ", chaine)
|
|
||||||
df.close()
|
df.close()
|
||||||
if "UTF-8" in chaine:
|
if "UTF-8" in chaine:
|
||||||
self.encodage = "UTF8"
|
self.encodage = "UTF8"
|
||||||
@ -295,14 +282,14 @@ print("Racine : ".center(18), racine)
|
|||||||
pas_de_dossier = True
|
pas_de_dossier = True
|
||||||
|
|
||||||
for a in os.scandir():
|
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
|
#il y a un dossier
|
||||||
pas_de_dossier = False
|
pas_de_dossier = False
|
||||||
print(f"Dossier à Traiter trouvé : {a.name}")
|
print(f"Dossier à Traiter trouvé : {a.name}")
|
||||||
racine = a
|
racine = a
|
||||||
if pas_de_dossier:
|
if pas_de_dossier:
|
||||||
print("Pas de dossier trouvé...\nFin de programme\n")
|
print("Pas de dossier trouvé...\nFin de programme\n")
|
||||||
os.system("pause")
|
|
||||||
# fin du programme
|
# fin du programme
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
@ -334,7 +321,7 @@ for dossier_courant, list_sousdossiers, list_fichiers in os.walk(racine):
|
|||||||
#TEST affichage de la liste de fichier
|
#TEST affichage de la liste de fichier
|
||||||
|
|
||||||
# initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs
|
# initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs
|
||||||
print("Init Dico\n")
|
print("Init Dictionnaire des Projets\n")
|
||||||
dico = {}
|
dico = {}
|
||||||
# Pour Chaque fichier de la liste Faire
|
# Pour Chaque fichier de la liste Faire
|
||||||
for fichier_courant in liste:
|
for fichier_courant in liste:
|
||||||
@ -353,9 +340,6 @@ for fichier_courant in liste:
|
|||||||
# ajouter le nom comme clé dans le dictionnaire
|
# ajouter le nom comme clé dans le dictionnaire
|
||||||
# associer le projet à cette clé
|
# associer le projet à cette clé
|
||||||
dico[projet.nom] = projet
|
dico[projet.nom] = projet
|
||||||
|
|
||||||
#test contenu du dico
|
|
||||||
|
|
||||||
# Fin Si
|
# Fin Si
|
||||||
# cataloguer le fichier dans le projet concerné
|
# cataloguer le fichier dans le projet concerné
|
||||||
projet.cataloguer(fichier_courant)
|
projet.cataloguer(fichier_courant)
|
||||||
@ -384,23 +368,20 @@ for projet in dico.values():
|
|||||||
|
|
||||||
# /* Ici le dictionnaire des _Projets doit être correctement remplie */
|
# /* Ici le dictionnaire des _Projets doit être correctement remplie */
|
||||||
|
|
||||||
|
|
||||||
os.system("pause")
|
|
||||||
|
|
||||||
# --produire le rapport
|
# --produire le rapport
|
||||||
# créer un classeur Excel
|
# créer un classeur Excel
|
||||||
# TODO pour le moment je vais partir sur un modele deja ecrit que j'ouvre
|
# 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
|
# 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")
|
classeur = openpyxl.load_workbook("modele_VISA_DORY.xlsx")
|
||||||
feuille = classeur.active
|
feuille = classeur.active
|
||||||
|
|
||||||
|
|
||||||
# /* Note : peut être utiliser un modèle pré-config */
|
# /* Note : peut être utiliser un modèle pré-config */
|
||||||
# --mettre en page la première feuille du classeur
|
# --mettre en page la première feuille du classeur
|
||||||
# inserer une image
|
# inserer une image
|
||||||
# écrire les nom des colonnes
|
# écrire les nom des colonnes
|
||||||
# écrire les formules de colorations auto des colonnes
|
# écrire les formules de colorations auto des colonnes
|
||||||
|
|
||||||
|
cell = feuille["A2"]
|
||||||
|
cell.value = "Dossier : "+ racine.name
|
||||||
# Pour chaque projet du dictionnaire Faire
|
# Pour chaque projet du dictionnaire Faire
|
||||||
ligne_courante = 4
|
ligne_courante = 4
|
||||||
for nom_projet, projet in dico.items():
|
for nom_projet, projet in dico.items():
|
||||||
@ -448,13 +429,38 @@ print("ligne_courante = ", ligne_courante )
|
|||||||
|
|
||||||
# --produire le dossier de mise à disposition
|
# --produire le dossier de mise à disposition
|
||||||
# créer un dossier "Travail" et un dossier "Livraison"
|
# 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"
|
# --créer l'arborescence du dossier "Travail"
|
||||||
# le dossier Travail devient le working directory
|
# le dossier Travail devient le working directory
|
||||||
# créer un dossier "00-Cadastre"
|
# 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"
|
# 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
|
# 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"
|
# 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"
|
# créer un dossier "04-Verif_Geometrie"
|
||||||
|
try:
|
||||||
|
os.mkdir("Travail\\04-Verif_Geometrie")
|
||||||
|
except FileExistsError as erreur:
|
||||||
|
print(erreur)
|
||||||
# --peupler le dossier "Travail"
|
# --peupler le dossier "Travail"
|
||||||
# Pour Chaque projet du dictionnaire Faire
|
# Pour Chaque projet du dictionnaire Faire
|
||||||
# copier les fichiers des projets conforme dans le dossier "01"
|
# 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 */
|
# /* Ici les dossiers doivent être correctement produit et remplie */
|
||||||
|
|
||||||
# ARRET DU PROGRAMME
|
# 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 */
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user