starting the window who deliver who add the ability to add a user to the db
This commit is contained in:
parent
131df64229
commit
607ced580e
1 changed files with 89 additions and 16 deletions
105
main.py
105
main.py
|
@ -30,8 +30,10 @@ class GesMag:
|
||||||
if len(motDPasse) < 8: # si le mot de passe est plus petit que 8 caractères
|
if len(motDPasse) < 8: # si le mot de passe est plus petit que 8 caractères
|
||||||
return (False, "Un mot de passe doit faire 8 caractères minimum.")
|
return (False, "Un mot de passe doit faire 8 caractères minimum.")
|
||||||
"""
|
"""
|
||||||
Pour le regex, je réfléchie comme dans la fonction `self.connexion`.
|
- Pour le regex, la fonction `sub` élimine tout ce qui est donné en fonction
|
||||||
J'utilises pas `match` parce que je suis plus à l'aise avec `sub`.
|
du pattern renseigné, alors si la fonction `sub` renvoie pas exactement
|
||||||
|
la même chaîne de charactère alors c'est qu'il y avait un charactère interdit.
|
||||||
|
- J'utilises pas `match` parce que je suis plus à l'aise avec `sub`.
|
||||||
"""
|
"""
|
||||||
if not sub(r"[A-Z]", '', motDPasse) != motDPasse:
|
if not sub(r"[A-Z]", '', motDPasse) != motDPasse:
|
||||||
return (False, "Un mot de passe doit au moins contenir une lettre majuscule.")
|
return (False, "Un mot de passe doit au moins contenir une lettre majuscule.")
|
||||||
|
@ -42,20 +44,27 @@ class GesMag:
|
||||||
|
|
||||||
return (True,) # si aucun des tests précédents n'est valide, alors le mot de passe est valide
|
return (True,) # si aucun des tests précédents n'est valide, alors le mot de passe est valide
|
||||||
|
|
||||||
|
def utilisateurCorrect(self, utilisateur: str) -> tuple:
|
||||||
|
"""Détermine si un nom d'utilisateur suit la politique du programme ou non."""
|
||||||
|
"""
|
||||||
|
Pour le nom d'utilisateur on vérifie si le champs n'est pas vide
|
||||||
|
et si il y a bien que des lettres et des chiffres.
|
||||||
|
"""
|
||||||
|
if len(utilisateur) == 0:
|
||||||
|
return (False, "Utilisateur incorrect.")
|
||||||
|
if sub(r" *?[^\w\s]+", '', utilisateur) != utilisateur:
|
||||||
|
return (False, "Un nom d'utilisateur ne doit pas contenir de caractère spécial.")
|
||||||
|
return (True,)
|
||||||
|
|
||||||
def connexion(self, utilisateur: str, motDePasse: str):
|
def connexion(self, utilisateur: str, motDePasse: str):
|
||||||
"""Gère la connexion aux différentes interfaces de l'application."""
|
"""Gère la connexion aux différentes interfaces de l'application."""
|
||||||
"""
|
"""
|
||||||
Vérification nom d'utilisateur / mot de passe correctement entré
|
Vérification nom d'utilisateur / mot de passe correctement entré
|
||||||
-> Pour le nom d'utilisateur on vérifie si le champs n'est pas vide
|
avec leurs fonctions respectives.
|
||||||
et si il y a bien que des lettres et des chiffres (le regex élimine tout
|
|
||||||
ce qui n'est pas ça, alors si la fonction `sub` renvoie pas exactement
|
|
||||||
la même chaîne de charactère alors c'est qu'il y avait un charactère
|
|
||||||
interdit dans le nom d'utilisateur).
|
|
||||||
-> Pour le mot de passe on demande à la fonction `motDePasseCorrect` pour
|
|
||||||
éviter de faire tout les tests ici.
|
|
||||||
"""
|
"""
|
||||||
if len(utilisateur) == 0 or sub(r" *?[^\w\s]+", '', utilisateur) != utilisateur:
|
pseudoOk = self.utilisateurCorrect(utilisateur)
|
||||||
messagebox.showerror("Erreur", "Utilisateur incorrect.")
|
if not pseudoOk[0]:
|
||||||
|
messagebox.showerror("Erreur", pseudoOk[1])
|
||||||
return
|
return
|
||||||
mdpOk = self.motDePasseCorrect(motDePasse)
|
mdpOk = self.motDePasseCorrect(motDePasse)
|
||||||
if not mdpOk[0]:
|
if not mdpOk[0]:
|
||||||
|
@ -166,13 +175,77 @@ class GesMag:
|
||||||
|
|
||||||
def __ajouterUtilisateur(metier: int):
|
def __ajouterUtilisateur(metier: int):
|
||||||
"""Permet de créer un nouvel utilisateur, manager (`metier = 0`) et caissier (`metier = 1`)."""
|
"""Permet de créer un nouvel utilisateur, manager (`metier = 0`) et caissier (`metier = 1`)."""
|
||||||
print(f"ajout d'un utilisateur (métier = {metier})")
|
"""
|
||||||
# ouvrir un toplevel?
|
L'enfant (`TopLevel`) dépend de la `Frame` et non du parent (`Tk`)
|
||||||
|
pour éviter de resté ouverte meme lorsque le manager se déconnecte.
|
||||||
|
"""
|
||||||
|
enfant = Toplevel(self.f)
|
||||||
|
enfant.title(f"Ajouter un {'manager' if metier == 0 else 'caissier'}")
|
||||||
|
self.dimensionsFenetre(enfant, 330, 220)
|
||||||
|
|
||||||
|
def ___verification():
|
||||||
|
"""Vérifie si les champs renseignées sont valides."""
|
||||||
|
# vérification pour le nom d'utilisateur
|
||||||
|
pass
|
||||||
|
# vérification pour le mot de passe
|
||||||
|
pass
|
||||||
|
# vérification pour le métier
|
||||||
|
pass
|
||||||
|
# vérification pour le nom
|
||||||
|
pass
|
||||||
|
# vérification pour le prénom
|
||||||
|
pass
|
||||||
|
# vérification pour la date de naissance
|
||||||
|
pass
|
||||||
|
# vérification pour l'adresse
|
||||||
|
pass
|
||||||
|
# vérification pour le code postal
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Champs
|
||||||
|
Label(enfant, text="Nom d'utilisateur :").grid(column=0, row=0, sticky='e')
|
||||||
|
pseudo = Entry(enfant)
|
||||||
|
pseudo.grid(column=1, row=0, sticky='w')
|
||||||
|
Label(enfant, text="Mot de passe :").grid(column=0, row=1, sticky='e')
|
||||||
|
passe = Entry(enfant)
|
||||||
|
passe.grid(column=1, row=1, sticky='w')
|
||||||
|
Label(enfant, text="Métier :").grid(column=0, row=2, sticky='e')
|
||||||
|
metier = Entry(enfant)
|
||||||
|
metier.grid(column=1, row=2, sticky='w')
|
||||||
|
Label(enfant, text="Nom :").grid(column=0, row=3, sticky='e')
|
||||||
|
nom = Entry(enfant)
|
||||||
|
nom.grid(column=1, row=3, sticky='w')
|
||||||
|
Label(enfant, text="Prénom :").grid(column=0, row=4, sticky='e')
|
||||||
|
prenom = Entry(enfant)
|
||||||
|
prenom.grid(column=1, row=4, sticky='w')
|
||||||
|
Label(enfant, text="Date de naissance :").grid(column=0, row=5, sticky='e')
|
||||||
|
naissance = Entry(enfant)
|
||||||
|
naissance.grid(column=1, row=5, sticky='w')
|
||||||
|
Label(enfant, text="Adresse").grid(column=0, row=6, sticky='e')
|
||||||
|
adresse = Entry(enfant)
|
||||||
|
adresse.grid(column=1, row=6, sticky='w')
|
||||||
|
Label(enfant, text="Code postal :").grid(column=0, row=7, sticky='e')
|
||||||
|
postal = Entry(enfant)
|
||||||
|
postal.grid(column=1, row=7, sticky='w')
|
||||||
|
|
||||||
|
def ___viderChamps():
|
||||||
|
"""Vide tout les champs de leur contenu"""
|
||||||
|
# On récupère toutes les `Entry` de la fenêtre et on change leur contenu
|
||||||
|
for champ in [widget for type, widget in enfant.children.items() if "entry" in type]:
|
||||||
|
champ.delete(0, "end")
|
||||||
|
champ.update()
|
||||||
|
|
||||||
|
# Boutons
|
||||||
|
Button(enfant, text="Valider", command=___verification).grid(column=0, row=8, columnspan=3, sticky='w')
|
||||||
|
Button(enfant, text="Vider les champs", command=___viderChamps).grid(column=0, row=8, columnspan=3)
|
||||||
|
Button(enfant, text="Quitter", command=enfant.destroy).grid(column=0, row=8, columnspan=3, sticky='e')
|
||||||
|
|
||||||
def __retirerUtilisateur(metier: int):
|
def __retirerUtilisateur(metier: int):
|
||||||
"""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`)."""
|
||||||
print(f"retirer un utilisateur (métier = {metier})")
|
enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur`
|
||||||
# ouvrir un toplevel?
|
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')
|
||||||
|
|
||||||
def __afficherInformationsUtilisateur(_):
|
def __afficherInformationsUtilisateur(_):
|
||||||
"""Permet d'afficher les informations d'un utilisateur"""
|
"""Permet d'afficher les informations d'un utilisateur"""
|
||||||
|
@ -186,7 +259,7 @@ class GesMag:
|
||||||
charactère avec [:-1] car c'est un espace.
|
charactère avec [:-1] car c'est un espace.
|
||||||
"""
|
"""
|
||||||
utilisateur = Utilisateurs().recuperationUtilisateur(pseudo=listeUtilisateurs.get(element[0]).split('(')[0][:-1])
|
utilisateur = Utilisateurs().recuperationUtilisateur(pseudo=listeUtilisateurs.get(element[0]).split('(')[0][:-1])
|
||||||
enfant = Toplevel(self.parent)
|
enfant = Toplevel(self.f) # cf. l'explication dans `__ajouterUtilisateur`
|
||||||
enfant.title(f"{utilisateur['nom']} {utilisateur['prenom']}")
|
enfant.title(f"{utilisateur['nom']} {utilisateur['prenom']}")
|
||||||
self.dimensionsFenetre(enfant, 300, 180)
|
self.dimensionsFenetre(enfant, 300, 180)
|
||||||
utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier"
|
utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier"
|
||||||
|
|
Reference in a new issue