Adding filter for the list
This commit is contained in:
parent
6a48447c4a
commit
f009b1b962
2 changed files with 49 additions and 6 deletions
49
main.py
49
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('<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")
|
||||
|
|
6
users.py
6
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é)."""
|
||||
|
|
Reference in a new issue