adding user removal option

This commit is contained in:
Mylloon 2021-11-21 11:52:35 +01:00
parent b1f1a18f84
commit 2c8189d651

73
main.py
View file

@ -287,7 +287,7 @@ class GesMag:
adresse.get(), adresse.get(),
int(postal.get()), # pas besoin de gérer d'erreur lors du cast car on a vérifié avant que c'était bien une suite de chiffre int(postal.get()), # pas besoin de gérer d'erreur lors du cast car on a vérifié avant que c'était bien une suite de chiffre
) )
__ajouterUtilisateursListe() # met à jour la liste __ajouterUtilisateursListe(listeUtilisateurs) # met à jour la liste
# Champs de saisie # Champs de saisie
# Nom d'utilisateurs # Nom d'utilisateurs
@ -341,8 +341,37 @@ class GesMag:
"""Permet de supprimer un utilisateur existant, manager (`metier = 0`) et caissier (`metier = 1`).""" """Permet de supprimer un utilisateur existant, manager (`metier = 0`) et caissier (`metier = 1`)."""
enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur` enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur`
enfant.title(f"Retirer un {'manager' if metier == 0 else 'caissier'}") enfant.title(f"Retirer un {'manager' if metier == 0 else 'caissier'}")
self.dimensionsFenetre(enfant, 300, 180)
Button(enfant, text="Quitter", command=enfant.destroy).grid(sticky='w') # Liste des utilisateurs
Label(enfant, text=f"Liste des {'manager' if metier == 0 else 'caissier'}", font=self.font).grid(column=0, row=0) # titre
# On définit une barre pour pouvoir scroller dans la liste
scroll_retirer = Scrollbar(enfant, orient="vertical")
scroll_retirer.grid(column=1, row=1, sticky="nse")
# On définit notre liste et on la lie à notre `Scrollbar`
listeUtilisateurs_retirer = Listbox(enfant, width=25, height=4, yscrollcommand=scroll_retirer.set)
scroll_retirer["command"] = listeUtilisateurs_retirer.yview # scroll à la verticale dans notre liste
# On ajoute nos utilisateurs à notre liste
__ajouterUtilisateursListe(listeUtilisateurs_retirer, metier)
listeUtilisateurs_retirer.grid(column=0, row=1)
# On affiche l'utilisateur quand on double-clique dessus
def ___suppressionUtilisateur():
"""Supprime l'utilisateur actuellement sélectionné dans la liste"""
element = listeUtilisateurs_retirer.curselection()
if len(element) == 0: # si aucun élément n'est selectionné
messagebox.showwarning("Attention", "Aucun utilisateur n'a été selectionné.")
else:
utilisateur = listeUtilisateurs_retirer.get(listeUtilisateurs_retirer.curselection()[0]).split('(')[0][:-1]
reponse = messagebox.askyesno("Confirmation", f"Voulez vous supprimer {utilisateur} ?")
if reponse == True:
Utilisateurs().suppressionUtilisateurs(utilisateur)
__ajouterUtilisateursListe(listeUtilisateurs_retirer) # met à jour la liste dans la fenêtre de suppression
__ajouterUtilisateursListe(listeUtilisateurs) # met à jour la liste dans l'interface principale
messagebox.showinfo("Information", f"Utilisateur {utilisateur} supprimé.")
# Boutons
Button(enfant, text="Supprimer", command=___suppressionUtilisateur).grid(column=0, row=8, columnspan=3, sticky='w')
Button(enfant, text="Quitter", command=enfant.destroy).grid(column=0, row=8, columnspan=3, sticky='e')
def __afficherInformationsUtilisateur(_): def __afficherInformationsUtilisateur(_):
"""Permet d'afficher les informations d'un utilisateur""" """Permet d'afficher les informations d'un utilisateur"""
@ -376,35 +405,39 @@ class GesMag:
caissierVerif.set(1) # par défaut on affiche que les caissiers caissierVerif.set(1) # par défaut on affiche que les caissiers
def __ajouterUtilisateursListe(): def __ajouterUtilisateursListe(liste: Listbox, force: int = None):
""" """
Ajoute des utilisateurs à la liste du Manager. Ajoute des utilisateurs à la liste du Manager.
-> metier = 0 : manager uniquement -> metier = 0 : manager uniquement
-> metier = 1 : caissier uniquement -> metier = 1 : caissier uniquement
-> metier = 2 : manager et caissier -> metier = 2 : manager et caissier
""" """
listeUtilisateurs.delete(0, "end") # vidé la liste des utilisateurs liste.delete(0, "end") # vidé la liste des utilisateurs
if managerVerif.get() == 1: if force: # si `force` n'est pas `None`, alors on force l'utilisation d'un métier
if caissierVerif.get() == 1: metier = force
metier = None # on affiche les 2 else: # sinon on fait une vérification normale en fonction des filtres de l'interface manager
if managerVerif.get() == 1:
if caissierVerif.get() == 1:
metier = None # on affiche les 2
else:
metier = 0 # on affiche seulement les managers
else: else:
metier = 0 # on affiche seulement les managers metier = 1 # on affiche les caissiers
else: if caissierVerif.get() == 0: # rien est coché, on revient à la configuration par défaut (caissiers uniquement)
metier = 1 # on affiche les caissiers metier = 1
if caissierVerif.get() == 0: # rien est coché, on revient à la configuration par défaut (caissiers uniquement) caissierVerif.set(1)
metier = 1
caissierVerif.set(1)
if metier == None: # on ajoute tous les utilisateurs if metier == None: # on ajoute tous les utilisateurs
for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()):
listeUtilisateurs.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})") liste.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})")
elif metier == 0: # on ajoute que les managers elif metier == 0: # on ajoute que les managers
for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()):
if utilisateur[1] == metier: if utilisateur[1] == metier:
listeUtilisateurs.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})") liste.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})")
elif metier == 1: # on ajoute que les caissiers elif metier == 1: # on ajoute que les caissiers
for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()):
if utilisateur[1] == metier: if utilisateur[1] == metier:
listeUtilisateurs.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})") liste.insert(idx, f"{utilisateur[0]} ({'manager' if utilisateur[1] == 0 else 'caissier'})")
else: # ce cas est là au cas où mais n'est pas sensé être appellé else: # ce cas est là au cas où mais n'est pas sensé être appellé
raise NameError("Métier inconnu.") raise NameError("Métier inconnu.")
@ -416,7 +449,7 @@ class GesMag:
listeUtilisateurs = Listbox(self.f, width=25, height=4, yscrollcommand=scroll.set) listeUtilisateurs = Listbox(self.f, width=25, height=4, yscrollcommand=scroll.set)
scroll["command"] = listeUtilisateurs.yview # scroll à la verticale dans notre liste scroll["command"] = listeUtilisateurs.yview # scroll à la verticale dans notre liste
# On ajoute nos utilisateurs à notre liste # On ajoute nos utilisateurs à notre liste
__ajouterUtilisateursListe() __ajouterUtilisateursListe(listeUtilisateurs)
listeUtilisateurs.grid(column=0, row=5) listeUtilisateurs.grid(column=0, row=5)
listeUtilisateurs.bind('<Double-Button>', __afficherInformationsUtilisateur) # on affiche l'utilisateur quand on double-clique dessus listeUtilisateurs.bind('<Double-Button>', __afficherInformationsUtilisateur) # on affiche l'utilisateur quand on double-clique dessus
@ -424,8 +457,8 @@ class GesMag:
Label(self.f, text="Filtre", font=self.font).grid(column=1, row=4, sticky='w', padx=10) # titre Label(self.f, text="Filtre", font=self.font).grid(column=1, row=4, sticky='w', padx=10) # titre
filtres = Frame(self.f) # Morceau qui va contenir nos checkbutton filtres = Frame(self.f) # Morceau qui va contenir nos checkbutton
filtres.grid(column=1, row=4, rowspan=2, sticky='w') filtres.grid(column=1, row=4, rowspan=2, sticky='w')
Checkbutton(filtres, text="Manager", variable=managerVerif, command=__ajouterUtilisateursListe).grid(sticky='w') Checkbutton(filtres, text="Manager", variable=managerVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w')
Checkbutton(filtres, text="Caissier", variable=caissierVerif, command=__ajouterUtilisateursListe).grid(sticky='w') Checkbutton(filtres, text="Caissier", variable=caissierVerif, command=lambda: __ajouterUtilisateursListe(listeUtilisateurs)).grid(sticky='w')
if __name__ == "__main__": if __name__ == "__main__":
"""Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)""" """Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)"""