Adding filter for the list

This commit is contained in:
Mylloon 2021-11-20 18:09:34 +01:00
parent 6a48447c4a
commit f009b1b962
2 changed files with 49 additions and 6 deletions

49
main.py
View file

@ -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('<Double-Button>', __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")

View file

@ -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é)."""