diff --git a/main.py b/main.py index dbd9771..5bb0c36 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ import tkinter.messagebox as messagebox -from tkinter import Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel +from tkinter import IntVar, Checkbutton, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel from re import sub from users import Utilisateurs # import de mon fichier pour gérer la base de donnée @@ -196,6 +196,43 @@ class GesMag: Label(self.f).grid(row = 3, pady=10) # séparateur # Liste des utilisateurs + managerVerif = IntVar(self.f) # filtre pour afficher ou non les managers dans la liste + caissierVerif = IntVar(self.f) # filtre pour afficher ou non les caissiers ou non dans la liste + + caissierVerif.set(1) # par défaut on affiche que les caissiers + + def __ajouterUtilisateursListe(): + """ + Ajoute des utilisateurs à la liste du Manager. + -> metier = 0 : manager uniquement + -> metier = 1 : caissier uniquement + -> metier = 2 : manager et caissier + """ + listeUtilisateurs.delete(0, "end") # vidé la liste des utilisateurs + if managerVerif.get() == 1: + if caissierVerif.get() == 1: + metier = None # on affiche les 2 + else: + metier = 0 # on affiche seulement les managers + else: + metier = 1 # on affiche les caissiers + if caissierVerif.get() == 0: # rien est coché, on revient à la configuration par défaut (caissiers uniquement) + metier = 1 + caissierVerif.set(1) + if not metier: # on ajoute tous les utilisateurs + for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): + listeUtilisateurs.insert(idx, utilisateur[0]) + elif metier == 0: # on ajoute que les managers + for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): + if utilisateur[1] == metier: + listeUtilisateurs.insert(idx, utilisateur[0]) + elif metier == 1: # on ajoute que les caissiers + for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): + if utilisateur[1] == metier: + listeUtilisateurs.insert(idx, utilisateur[0]) + else: # ce cas est là au cas où mais n'est pas sensé être appellé + raise NameError("Métier inconnu.") + Label(self.f, text="Liste des utilisateurs", font=self.font).grid(column=0, row=4) # titre # On définit une barre pour pouvoir scroller dans la liste scroll = Scrollbar(self.f, orient="vertical") @@ -204,11 +241,17 @@ class GesMag: listeUtilisateurs = Listbox(self.f, width=25, height=4, yscrollcommand=scroll.set) scroll['command'] = listeUtilisateurs.yview # On ajoute nos utilisateurs à notre liste - for idx, utilisateur in enumerate(Utilisateurs().listUtilisateurs()): - listeUtilisateurs.insert(idx, utilisateur) + __ajouterUtilisateursListe() listeUtilisateurs.grid(column=0, row=5) listeUtilisateurs.bind('', __afficherInformationsUtilisateur) # on affiche l'utilisateur quand on double-clique dessus + # Filtre pour la liste + 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.grid(column=1, row=4, rowspan=2, sticky='w') + Checkbutton(filtres, text="Manager", variable=managerVerif, command=__ajouterUtilisateursListe).grid(sticky='w') + Checkbutton(filtres, text="Caissier", variable=caissierVerif, command=__ajouterUtilisateursListe).grid(sticky='w') + if __name__ == "__main__": """Application "GesMag" pour le module de Programmation d'interfaces (2021-2022)""" print("-- Compte par défaut --\nNom d'utilisateur: admin\nMot de passe: P@ssword") diff --git a/users.py b/users.py index 78819a1..ddbbba1 100644 --- a/users.py +++ b/users.py @@ -69,12 +69,12 @@ class Utilisateurs(BaseDeDonnees): return reponseBaseDeDonnee[0] def listUtilisateurs(self) -> list: - """Retourne la liste des nom d'utilisateurs.""" + """Retourne la liste des nom d'utilisateurs (avec leur métier).""" requete = """ - SELECT pseudo FROM utilisateurs + SELECT pseudo, metier FROM utilisateurs """ # i[0] parce que sinon ça renvoie des Tuple qui ressemble à ça : `(Utilisateur,)` - return [i[0] for i in self.affichageResultat(self.requete(requete))] + return self.affichageResultat(self.requete(requete)) def recuperationUtilisateur(self, id: int = None, pseudo: str = None) -> dict: """Retourne les informations d'un utilisateur grâce à son ID ou son pseudo (ID est priorité)."""