Script Dossiers utilisateur


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")