Compare commits
No commits in common. "f72c04ec2d893705cbfd0c0ae1e6698fc0957195" and "3ecb0962718fb63095e073d4b85bd2084630c88f" have entirely different histories.
f72c04ec2d
...
3ecb096271
@ -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="")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user