From 9853538308b9a957803e0059e76bdc0ed1f6c685 Mon Sep 17 00:00:00 2001 From: "pierre.gauthier" Date: Wed, 26 Feb 2025 14:23:18 +0100 Subject: [PATCH] Feat : sort the special case of SECT files first --- dory_sort_out.py | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/dory_sort_out.py b/dory_sort_out.py index d80f0ea..b5ef732 100644 --- a/dory_sort_out.py +++ b/dory_sort_out.py @@ -25,6 +25,7 @@ FOLDERNAMES = [ ] ANNEXE_FOLDER_ID = 4 +PLANS_DE_SECTEUR_ID = 7 # Les mots clef associés à chaque dossier KEYWORDS = { @@ -37,10 +38,9 @@ KEYWORDS = { "Reglement": FOLDERNAMES[3], "Orientations_amenagement": FOLDERNAMES[5], "POA": FOLDERNAMES[6], - "Plan_de_secteur": FOLDERNAMES[7], + "Plan_de_secteurs": FOLDERNAMES[7], } - def confirm_choice(choice) -> bool: """ Demande confirmation du choix de l'utilisateur @@ -53,7 +53,7 @@ def confirm_choice(choice) -> bool: def test_date(date_input: str): """teste si la date donnée est valide""" - # Pattern pour vérifier qu'il y a bien 8 chiffres, 4pour l'année, 2 pour le mois, 2 pour le jour + # Pattern pour vérifier qu'il y a bien 8 chiffres, 4 pour l'année, 2 pour le mois, 2 pour le jour # permet d'exclure les erreurs de frappes, comme les "." les " " ou les lettres pattern = r"^\d{4}\d{2}\d{2}$" @@ -154,6 +154,34 @@ def sort_files(prefixe, suffixe, sort_path): # corrige les erreur de nommage de fichiers file = correct_file_name(file) + sector = re.search(r'SECT(\d{2})',file) + #Test cas particuliers Plans de secteurs + if sector: + sector_name = sector.group(0) + folder_path = f"{sort_path}/7_Plans_de_secteur/{sector_name}" + if not os.path.isdir(folder_path): + os.mkdir(folder_path) + os.mkdir(f"{folder_path}/3_Reglement") + os.mkdir(f"{folder_path}/5_Orientations_amenagement") + + specific_keywords = ["Reglement_graphique","Reglement","Orientations_amenagement"] + + for index, keyword in enumerate(specific_keywords): + if keyword.lower() in file.lower(): + filename = f"{prefixe}_{keyword}_{sector_name}_{suffixe}.pdf" + newpath ="" + if index <= 1: + newpath = f"{folder_path}/3_Reglement" + else: + newpath = f"{folder_path}/5_Orientations_amenagement" + + renamed = os.path.join(os.path.dirname(file),filename) + os.rename(file,renamed) + shutil.move(renamed,newpath) + folders_file_count[PLANS_DE_SECTEUR_ID] += 1 + break + continue + for keyword, folder in KEYWORDS.items(): # Si le mot clef (en minuscule) est dans le nom du fichier (en minuscule) @@ -237,7 +265,6 @@ def error_report(folder_data): # Pour chaque dossiers # On écrit son nom dans la colonne B # On écris le nombre de fichier contenus dans la colonne C - # Si vide Erreur Colonne D for i, content in enumerate(folder_data): report_worsheet["B" + str(currrent_cell)] = FOLDERNAMES[i] report_worsheet["C" + str(currrent_cell)] = content @@ -248,6 +275,7 @@ def error_report(folder_data): "C" + str(currrent_cell) ].fill = report_worsheet["D" + str(currrent_cell)].fill = row_color + # Si dossier vide Erreur Colonne D if content == 0: report_worsheet["D" + str(currrent_cell)] = ( "/!\\ aucun fichier dans le dossier /!\\"