ArchitectureDossiers.zip
################################################################################
# Nom du projet: Automatisation de creation de compte utilisateur
# Nom du developpeur: BRUCHET Thomas
# Version: 1.0
# Date de creation: 01/06/2021
# Date de modification: 01/06/2021
# Version de Python: 3.9
# Licence:
# Bibliotheques annexes:
# Documentation: /cefim/documentation/python/automatisation.md
########################################
import os
os.system('cls')
# ===============================
# Import
# ===============================
import time # Création d’un fichier de journalisation
import pathlib # Création des dossiers
from pathlib import Path
import os # Copie des fichiers
import shutil # Copie des fichiers
import zipfile # Création d’une archive zip
from distutils.dir_util import copy_tree
import send2trash # Suppression du dossier
# ===============================
# Variables
# ===============================
ymdhms = time.strftime("%y%m%d%H%M%S")
ymdhm = time.strftime("%y%m%d%H%M")
ymd = time.strftime("%y%m%d")
hms = time.strftime("%H%M%S")
DateLog = time.strftime("%Y-%m-%d__%H-%M-%S")
RepertoireCourant = os.getcwd()
RepertoireArchives = os.getcwd() + "\\" + "Archives"
RepertoireComptes = RepertoireCourant + "\\" + "Comptes"
RepertoireLogs = RepertoireCourant + "\\" + "Logs"
DossierModelesFichiers = RepertoireCourant + "\\" + "Modeles_fichiers"
DossierModelesFichiers_Conges = DossierModelesFichiers + "\\" + "Conges"
DossierModelesFichiers_Missions= DossierModelesFichiers + "\\" + "Missions"
DossierModelesFichiers_Frais= DossierModelesFichiers + "\\" + "Frais"
# =============================================================================================
# Code
# =============================================================================================
# ===============================
# Information sur le salarié
# Le login du salarie est son nom+date(ymdhm) - Si deux salarié ont le meme nom, le second sera modifié suite au test "QRemplacement"
# ===============================
NomSalarie = input("Quel est le nom du salarié: ")
LoginSalarie = NomSalarie+ymdhm
RepertoireUser = RepertoireComptes + "\\" + LoginSalarie
FichierLog = Path("Logs\log_user_"+ LoginSalarie + ".log")
# ===============================
# Vérification de l'existance de l'utilisateur
# ===============================
QRemplacement = "non"
TestDossierExistant = os.path.exists(RepertoireUser)
if TestDossierExistant == True :
print("Attention l'utilisateur existe déjà.")
print("---")
print("Si vous le remplacez, une archive de l'existant sera cree.")
print("Sinon, l'utilisateur existant sera mis à jours.")
print("---")
QRemplacement = input("Souhaitez vous le supprimer et le remplacer ? (oui/non) ")
if QRemplacement == "oui" :
LoginSalarie = LoginSalarie
RepertoireUserOld = RepertoireUser
RepertoireUser = RepertoireComptes + "\\" + LoginSalarie
FichierLogOld = Path("Logs\log_user_"+ LoginSalarie + ".log")
FichierLog = Path("Logs\log_user_"+ LoginSalarie + ".log")
else:
RepertoireUserOld = RepertoireUser
FichierLogOld = Path("Logs\log_user_"+ LoginSalarie + ".log")
LoginSalarie = LoginSalarie + "_2"
RepertoireUser = RepertoireComptes + "\\" + LoginSalarie
FichierLog = Path("Logs\log_user_"+ LoginSalarie + ".log")
# ===============================
# Creation du log pour utilisateur
# ===============================
TestFichierLogExistant = os.path.exists(FichierLog)
if TestFichierLogExistant == False :
FichierLog.open("w").write("###Creation du fichier log de: " + LoginSalarie + " le " + DateLog + ".\n") #w Création ou écrasement du fichier
else:
FichierLog.open("a").write("Mise a jours des informations le " + DateLog + ".\n") #a ajoute une ligne au fichier
FichierLog.open("a").write("----\n")
# ===============================
# Archivage et Suppression du repertoire
# ===============================
if QRemplacement == "oui" :
# copie du log en vue d'archivage.
FichierLog.open("a").write("L'utilisateur demande existe deja, l'ancien va etre archive et recree \n")
FichierLog.open("a").write("----\n")
FichierLog.open("a").write("Le dossier de: " + LoginSalarie + " a ete archive sous le nom : " + RepertoireArchives + "\\" + LoginSalarie + "_" + ymdhms + ".zip" + " le " + DateLog + ".\n") #a ajoute une ligne au fichie
shutil.copy(FichierLog, RepertoireUserOld)
# creation de l'archive
shutil.make_archive(RepertoireArchives + "\\" + LoginSalarie + "_" + ymdhms, 'zip', RepertoireUserOld)
# suppression du repertoire
shutil.rmtree(RepertoireComptes + "\\" + LoginSalarie, ignore_errors = True)
# creation du nouveau fichier de log
FichierLog.open("w").write("###Creation du fichier log de: " + LoginSalarie + " le " + DateLog + ".\n") #w Création ou écrasement du fichier
FichierLog.open("a").write("Le dossier de: " + LoginSalarie + " a ete supprime le " + DateLog + ".\n")
else:
FichierLog.open("a").write("L'utilisateur existe deja et un nouveau sera cree sous la forme: " + LoginSalarie + "\n")
FichierLog.open("a").write("----\n")
# ===============================
# Création nouveau repertoire utilisateur
# ===============================
#shutil.rmtree(RepertoireComptes + "\\" + LoginSalarie, ignore_errors = True)
try:
os.mkdir(RepertoireComptes + "\\" + LoginSalarie)
except FileExistsError :
pass
except :
raise
FichierLog.open("a").write("Le dossier de: " + LoginSalarie + " a ete cree le " + DateLog + ".\n") #a ajoute une ligne au fichie
FichierLog.open("a").write("----\n")
# ===============================
# Création des l'arborescence des répertoires de l'utilisateur
# ===============================
folder = {"REPERTOIRE_SALARIE" : RepertoireComptes + "\\" + LoginSalarie,
"PUBLIC" : RepertoireComptes + "\\" + LoginSalarie + "\\Public",
"RH" : RepertoireComptes + "\\" + LoginSalarie + "\\Public\\RH",
"CONGES" : RepertoireComptes + "\\" + LoginSalarie+ "\\Public\\RH\\Conges",
"FICHE_MISSION" : RepertoireComptes + "\\" + LoginSalarie + "\\Public\\RH\\Fiche_Mission",
"DAF" : RepertoireComptes + "\\" + LoginSalarie + "\\Public\\DAF",
"NOTE_FRAIS" : RepertoireComptes + "\\" + LoginSalarie + "\\Public\\DAF\\Note_Frais",
"FICHE_PAIE" : RepertoireComptes + "\\" + LoginSalarie + "\\Public\\DAF\\Fiche_Paie",
"PRIVE" : RepertoireComptes + "\\" + LoginSalarie + "\\Prive"
}
User_Fichiers_Conges = folder["CONGES"]
User_Fichiers_Frais = folder["NOTE_FRAIS"]
User_Fichiers_Missions = folder["FICHE_MISSION"]
# ===============================
# Création des répertoires de l'utilisateur
# ===============================
for key in folder :
try :
Path(folder[key]).mkdir(parents=True, exist_ok=True)
except :
FichierLog.open("a").write("Le repertoire " + folder[key] + " n'a pas ete cree.\n")
else :
FichierLog.open("a").write("Le repertoire " + folder[key] + " a ete cree le: " + DateLog + ".\n")
# ===============================
# Copie des fichiers modèles.
# ===============================
if folder[key] == folder["CONGES"] :
copy_tree(DossierModelesFichiers_Conges, User_Fichiers_Conges)
FichierLog.open("a").write("----\n")
FichierLog.open("a").write("Les modeles de Conges ont ete implementes.\n")
FichierLog.open("a").write("----\n")
elif folder[key] == folder["NOTE_FRAIS"]:
copy_tree(DossierModelesFichiers_Frais, User_Fichiers_Frais)
FichierLog.open("a").write("----\n")
FichierLog.open("a").write("Les modeles de Frais ont ete implementes.\n")
FichierLog.open("a").write("----\n")
elif folder[key] == folder["FICHE_MISSION"]:
copy_tree(DossierModelesFichiers_Missions, User_Fichiers_Missions)
FichierLog.open("a").write("----\n")
FichierLog.open("a").write("Les modeles de Missions ont ete implementes.\n")
FichierLog.open("a").write("----\n")
FichierLog.open("a").write("========= Fin de script: " + ymdhms + " \n")
FichierLog.open("a").write("\n")
FichierLog.open("a").write("\n")
FichierLog.open("a").write("\n")