adding user removal option
This commit is contained in:
parent
b1f1a18f84
commit
2c8189d651
1 changed files with 53 additions and 20 deletions
55
main.py
55
main.py
|
@ -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,14 +405,17 @@ 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 force: # si `force` n'est pas `None`, alors on force l'utilisation d'un métier
|
||||||
|
metier = force
|
||||||
|
else: # sinon on fait une vérification normale en fonction des filtres de l'interface manager
|
||||||
if managerVerif.get() == 1:
|
if managerVerif.get() == 1:
|
||||||
if caissierVerif.get() == 1:
|
if caissierVerif.get() == 1:
|
||||||
metier = None # on affiche les 2
|
metier = None # on affiche les 2
|
||||||
|
@ -394,17 +426,18 @@ class GesMag:
|
||||||
if caissierVerif.get() == 0: # rien est coché, on revient à la configuration par défaut (caissiers uniquement)
|
if caissierVerif.get() == 0: # rien est coché, on revient à la configuration par défaut (caissiers uniquement)
|
||||||
metier = 1
|
metier = 1
|
||||||
caissierVerif.set(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)"""
|
||||||
|
|
Reference in a new issue