Compare commits

..

No commits in common. "f72c04ec2d893705cbfd0c0ae1e6698fc0957195" and "3ecb0962718fb63095e073d4b85bd2084630c88f" have entirely different histories.

View File

@ -5,10 +5,8 @@ import os
import re import re
import glob import glob
import shutil import shutil
import unicodedata
from datetime import datetime from datetime import datetime
import openpyxl as xls import openpyxl as xls
from openpyxl.styles import PatternFill
# Les noms de tous les dossier a créer # Les noms de tous les dossier a créer
@ -23,8 +21,6 @@ FOLDERNAMES = [
"7_Plans_de_secteur", "7_Plans_de_secteur",
] ]
ANNEXE_FOLDER_ID = 4
# Les mots clef associés à chaque dossier # Les mots clef associés à chaque dossier
KEYWORDS = { KEYWORDS = {
"Jugement": FOLDERNAMES[0], "Jugement": FOLDERNAMES[0],
@ -39,16 +35,6 @@ KEYWORDS = {
"Plan_de_secteur": FOLDERNAMES[7], "Plan_de_secteur": FOLDERNAMES[7],
} }
def confirm_choice(choice) -> bool:
"""
Demande confirmation du choix de l'utilisateur
"""
print(f"vous avez choisi {choice} est-ce correct ?")
answer = int(input("[1] - Oui \n[2] - Non \nReponse : "))
return answer == 1
def test_date(date_input: str): def test_date(date_input: str):
"""teste si la date donnée est valide""" """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, 4pour l'année, 2 pour le mois, 2 pour le jour
@ -85,7 +71,7 @@ def test_siren_insee(is_plu: bool, number: str):
def create_folders(is_plu: bool, prefixe, suffixe): def create_folders(is_plu: bool, prefixe, suffixe):
"""Crée l'arborescence""" """Crée l'arborescence"""
main_path = f"{prefixe}_PLU{"i" if not is_plu else ""}_{suffixe}" main_path = prefixe + "_" + ("PLU" if is_plu else "PLUi") + "_" + suffixe
try: try:
os.mkdir(main_path) os.mkdir(main_path)
@ -117,13 +103,8 @@ def correct_file_name(file):
espaces et tirets deviennent des underscore espaces et tirets deviennent des underscore
""" """
basename = os.path.basename(file) basename = os.path.basename(file)
correct_file = basename.replace(" ","_").replace("-","_") correct_file = basename.replace(" ","_")
correct_file = basename.replace("-","_")
# Supprime les accents et les convertis en minuscules
correct_file = ''.join(
(c if unicodedata.category(c) != 'Mn' else '')
for c in unicodedata.normalize('NFD', correct_file)
)
correct_file = os.path.join(os.path.dirname(file),correct_file) correct_file = os.path.join(os.path.dirname(file),correct_file)
os.rename(file,correct_file) os.rename(file,correct_file)
return correct_file return correct_file
@ -140,7 +121,6 @@ def sort_files(prefixe, suffixe, sort_path):
#compte le nombre de fois mot clef apparait #compte le nombre de fois mot clef apparait
keyword_count = {key: 0 for key in KEYWORDS} keyword_count = {key: 0 for key in KEYWORDS}
folders_file_count = [0] * len(FOLDERNAMES)
for file in files: for file in files:
no_keyword = True no_keyword = True
@ -164,7 +144,6 @@ def sort_files(prefixe, suffixe, sort_path):
os.path.dirname(file), os.path.dirname(file),
prefixe + "_" + filename + "_" + suffixe + ".pdf",) prefixe + "_" + filename + "_" + suffixe + ".pdf",)
folders_file_count[int(folder[0])] +=1
os.rename(file, renamed) os.rename(file, renamed)
shutil.move(renamed, new_path) shutil.move(renamed, new_path)
no_keyword = False no_keyword = False
@ -192,19 +171,15 @@ def sort_files(prefixe, suffixe, sort_path):
+ ".pdf", + ".pdf",
) )
os.rename(file, renamed) os.rename(file, renamed)
shutil.move(renamed, sort_path + "/" + FOLDERNAMES[ANNEXE_FOLDER_ID]) shutil.move(renamed, sort_path + "/" + FOLDERNAMES[4])
folders_file_count[ANNEXE_FOLDER_ID] += 1
return keyword_count, folders_file_count return keyword_count
# return True # return True
def error_report(file_data,folder_data): def error_report(data):
""" """
Crée le rapport d'utilisation du script Crée le rapport d'utilisation du script
""" """
#Couleur rouge
error_color =PatternFill(patternType='solid',fgColor='00FF0000')
report = xls.Workbook() report = xls.Workbook()
report_worsheet = report.active report_worsheet = report.active
report_worsheet.title = "Compte rendu" report_worsheet.title = "Compte rendu"
@ -217,25 +192,15 @@ def error_report(file_data,folder_data):
report_worsheet.column_dimensions['B'].width *= 3 report_worsheet.column_dimensions['B'].width *= 3
report_worsheet.column_dimensions['F'].width *= 3 report_worsheet.column_dimensions['F'].width *= 3
report_worsheet.column_dimensions['G'].width *= 3 report_worsheet.column_dimensions['G'].width *= 3
report_worsheet.column_dimensions['H'].width *= 3
currrent_cell = 2 currrent_cell = 2
for key in file_data: for key in data:
report_worsheet['A'+ str(currrent_cell)] = key report_worsheet['A'+ str(currrent_cell)] = key
report_worsheet['B'+ str(currrent_cell)] = file_data.get(key) report_worsheet['B'+ str(currrent_cell)] = data.get(key)
currrent_cell+=1 currrent_cell+=1
currrent_cell = 2 report_worsheet['A'+str(3 + len(data.keys()))] = "Total fichiers"
for i, content in enumerate(folder_data): report_worsheet['B'+str(3 + len(data.keys()))] = '=SUM(B2:B' + str(1 + len(data.keys())) + ')'
report_worsheet['F'+ str(currrent_cell)] = FOLDERNAMES[i]
report_worsheet['G'+ str(currrent_cell)] = content
if content == 0:
report_worsheet['H'+ str(currrent_cell)] = "/!\\ aucun fichier dans le dossier /!\\"
report_worsheet['H'+ str(currrent_cell)].fill = error_color
currrent_cell+=1
report_worsheet['A'+str(3 + len(file_data.keys()))] = "Total fichiers"
report_worsheet['B'+str(3 + len(file_data.keys()))] = '=SUM(B2:B' + str(1 + len(file_data.keys())) + ')'
report.save("Rapport.xlsx") report.save("Rapport.xlsx")
def sortout(): def sortout():
@ -245,7 +210,7 @@ def sortout():
# demande si c'est un PLU ou un PLUi tant que l'input ne correspond pas à ce que l'on attend # demande si c'est un PLU ou un PLUi tant que l'input ne correspond pas à ce que l'on attend
while True: while True:
answer = int( answer = int(
input("[1] - PLU \n[2] - PLUi \nQuel type de dossier est a étudier ? : ") input("[1] - PLU \n[2] - PLUi \nQuel type de dossier est a étudier ? :")
) )
if answer > 2 or answer < 1: if answer > 2 or answer < 1:
@ -253,27 +218,31 @@ def sortout():
# print("\033[A\033[K", end="") #supprime la dernière ligne # print("\033[A\033[K", end="") #supprime la dernière ligne
else: else:
is_plu = answer == 1 is_plu = answer == 1
if confirm_choice("PLU" if answer == 1 else "PLUi"): break
break
# On demande le numero INSEE ou SIREN tant que l'input est invalide # On demande le numero INSEE ou SIREN tant que l'input est invalide
while True: while True:
print("numero INSEE (Format 5 chiffres): " print("numero INSEE (Format 5 chiffres): "
if is_plu else "numero siren (Format 9 chiffres): ", end="") if is_plu else "numero siren (Format 9 chiffres): ", end="")
prefixe = input() prefixe = input()
if test_siren_insee(is_plu, prefixe) and confirm_choice(prefixe): if test_siren_insee(is_plu, prefixe):
break break
# On demande la date d'approbation tant que l'input est invalide # On demande la date d'approbation tant que l'input est invalide
while True: while True:
print("Date d'approbation (Format AAAAMMJJ): ", end="") print("Date d'approbation (Format AAAAMMJJ): ", end="")
suffixe = input() suffixe = input()
if test_date(suffixe) and confirm_choice(suffixe): if test_date(suffixe):
break break
main_path = create_folders(is_plu, prefixe, suffixe) main_path = create_folders(is_plu, prefixe, suffixe)
donees_fichiers, donnees_dossiers = sort_files(prefixe, suffixe, main_path) donees_fichiers = sort_files(prefixe, suffixe, main_path)
error_report(donees_fichiers,donnees_dossiers) error_report(donees_fichiers)
# Chargement
# for i in range(100):
# print(f"{i}%")
# time.sleep(0.5)
# if i <100:
# print("\033[A\033[K", end="")