Adding ability to add a casher to the database
This commit is contained in:
parent
acd2f9e950
commit
1bdba6f7a7
1 changed files with 123 additions and 25 deletions
148
main.py
148
main.py
|
@ -56,6 +56,44 @@ class GesMag:
|
||||||
return (False, "Un nom d'utilisateur ne doit pas contenir de caractère spécial.")
|
return (False, "Un nom d'utilisateur ne doit pas contenir de caractère spécial.")
|
||||||
return (True,)
|
return (True,)
|
||||||
|
|
||||||
|
def nomCorrect(self, nom: str) -> bool:
|
||||||
|
"""Détermine si un nom suit la politique du programme ou non."""
|
||||||
|
if len(nom) == 0:
|
||||||
|
return False
|
||||||
|
if sub(r" *?[^\w\s]+", '', nom) != nom: # pas de caractères spéciaux dans un nom
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def prenomCorrect(self, prenom: str) -> bool:
|
||||||
|
"""Détermine si un prénom suit la politique du programme ou non."""
|
||||||
|
if len(prenom) == 0:
|
||||||
|
return False
|
||||||
|
if sub(r" *?[^\w\s]+", '', prenom) != prenom: # pas de caractères spéciaux dans un prénom
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def naissanceCorrect(self, naissance: str) -> bool:
|
||||||
|
"""Détermine si une date de naissance suit la politique du programme ou non."""
|
||||||
|
if len(naissance) == 0:
|
||||||
|
return False
|
||||||
|
if sub(r"\d{4}\/\d{2}\/\d{2}", '', naissance) != '':
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def adresseCorrect(self, adresse: str) -> bool:
|
||||||
|
"""Détermine si une adresse suit la politique du programme ou non."""
|
||||||
|
if len(adresse) == 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def postalCorrect(self, code: str) -> bool:
|
||||||
|
"""Détermine si un code postal suit la politique du programme ou non."""
|
||||||
|
if len(code) == 0:
|
||||||
|
return False
|
||||||
|
if sub(r"\d{5}", '', code) != '':
|
||||||
|
return False
|
||||||
|
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."""
|
||||||
"""
|
"""
|
||||||
|
@ -72,7 +110,7 @@ class GesMag:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Redirection vers la bonne interface
|
# Redirection vers la bonne interface
|
||||||
utilisateurBaseDeDonnee = Utilisateurs().verificationIdentifiants(utilisateur.lower(), motDePasse)
|
utilisateurBaseDeDonnee = Utilisateurs().verificationIdentifiants(utilisateur, motDePasse)
|
||||||
if utilisateurBaseDeDonnee[0] > 0:
|
if utilisateurBaseDeDonnee[0] > 0:
|
||||||
if utilisateurBaseDeDonnee[1] == 0: # si le métier est "Manager"
|
if utilisateurBaseDeDonnee[1] == 0: # si le métier est "Manager"
|
||||||
self._interfaceManager(utilisateurBaseDeDonnee[0])
|
self._interfaceManager(utilisateurBaseDeDonnee[0])
|
||||||
|
@ -181,52 +219,112 @@ class GesMag:
|
||||||
"""
|
"""
|
||||||
enfant = Toplevel(self.f)
|
enfant = Toplevel(self.f)
|
||||||
enfant.title(f"Ajouter un {'manager' if metier == 0 else 'caissier'}")
|
enfant.title(f"Ajouter un {'manager' if metier == 0 else 'caissier'}")
|
||||||
self.dimensionsFenetre(enfant, 330, 220)
|
self.dimensionsFenetre(enfant, 640, 200)
|
||||||
|
|
||||||
def ___verification():
|
def ___verification():
|
||||||
"""Vérifie si les champs renseignées sont valides."""
|
"""Vérifie si les champs renseignées sont valides."""
|
||||||
|
"""
|
||||||
|
La variable `ok` sert à savoir si la vérification est passée
|
||||||
|
si elle vaut `True` alors tout est bon,
|
||||||
|
Par contre si elle vaut `False` alors il y a eu une erreur.
|
||||||
|
Les valeurs `Entry` qui ne sont pas passés seront dans
|
||||||
|
la liste `mauvaisChamps`.
|
||||||
|
"""
|
||||||
|
ok = True
|
||||||
|
mauvaisChamps = []
|
||||||
# vérification pour le nom d'utilisateur
|
# vérification pour le nom d'utilisateur
|
||||||
pass
|
if self.utilisateurCorrect(pseudo.get())[0] == False or Utilisateurs().utilisateurExistant(pseudo.get()) == True:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(pseudo)
|
||||||
# vérification pour le mot de passe
|
# vérification pour le mot de passe
|
||||||
pass
|
if self.motDePasseCorrect(passe.get())[0] == False:
|
||||||
# vérification pour le métier
|
ok = False
|
||||||
pass
|
mauvaisChamps.append(passe)
|
||||||
# vérification pour le nom
|
# vérification pour le nom
|
||||||
pass
|
if self.nomCorrect(nom.get()) == False:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(nom)
|
||||||
# vérification pour le prénom
|
# vérification pour le prénom
|
||||||
pass
|
if self.prenomCorrect(prenom.get()) == False:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(prenom)
|
||||||
# vérification pour la date de naissance
|
# vérification pour la date de naissance
|
||||||
pass
|
if self.naissanceCorrect(naissance.get()) == False:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(naissance)
|
||||||
# vérification pour l'adresse
|
# vérification pour l'adresse
|
||||||
pass
|
if self.adresseCorrect(adresse.get()) == False:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(adresse)
|
||||||
# vérification pour le code postal
|
# vérification pour le code postal
|
||||||
pass
|
if self.postalCorrect(postal.get()) == False:
|
||||||
|
ok = False
|
||||||
|
mauvaisChamps.append(postal)
|
||||||
|
|
||||||
# Champs
|
if ok == False:
|
||||||
|
"""
|
||||||
|
Tous les champs qui n'ont pas réunies les conditions nécéssaires
|
||||||
|
sont mis en orange pendant 3 secondes pour bien comprendre quelles champs
|
||||||
|
sont à modifié.
|
||||||
|
|
||||||
|
La fonction lambda `remettreCouleur` permet de remettre la couleur initial
|
||||||
|
après les 3 secondes.
|
||||||
|
"""
|
||||||
|
remettreCouleur = lambda widget, ancienneCouleur: widget.configure(bg=ancienneCouleur)
|
||||||
|
for champs in mauvaisChamps:
|
||||||
|
couleur = champs["background"] # couleur d'avant changement
|
||||||
|
champs.configure(bg="orange") # on change la couleur du champs en orange
|
||||||
|
# dans 3 secondes on fait : `remettreCouleur(champs, couleur)`
|
||||||
|
champs.after(3000, remettreCouleur, champs, couleur)
|
||||||
|
else:
|
||||||
|
# Tous les tests sont passés, on peut ajouter l'utilisateur à la base de donnée
|
||||||
|
Utilisateurs().ajoutUtilisateur(
|
||||||
|
pseudo.get(),
|
||||||
|
passe.get().strip(),
|
||||||
|
metier,
|
||||||
|
nom.get(),
|
||||||
|
prenom.get(),
|
||||||
|
naissance.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
|
||||||
|
)
|
||||||
|
__ajouterUtilisateursListe() # met à jour la liste
|
||||||
|
|
||||||
|
# Champs de saisie
|
||||||
|
# Nom d'utilisateurs
|
||||||
Label(enfant, text="Nom d'utilisateur :").grid(column=0, row=0, sticky='e')
|
Label(enfant, text="Nom d'utilisateur :").grid(column=0, row=0, sticky='e')
|
||||||
|
Label(enfant, text="Pas de caractères spéciaux", font=("Arial", 10, "italic")).grid(column=2, row=0, sticky='w')
|
||||||
pseudo = Entry(enfant)
|
pseudo = Entry(enfant)
|
||||||
pseudo.grid(column=1, row=0, sticky='w')
|
pseudo.grid(column=1, row=0, sticky='w')
|
||||||
|
# Mot de passe
|
||||||
Label(enfant, text="Mot de passe :").grid(column=0, row=1, sticky='e')
|
Label(enfant, text="Mot de passe :").grid(column=0, row=1, sticky='e')
|
||||||
|
Label(enfant, text="1 majuscule, miniscule et caractère spécial minimum", font=("Arial", 10, "italic")).grid(column=2, row=1, sticky='w')
|
||||||
passe = Entry(enfant)
|
passe = Entry(enfant)
|
||||||
passe.grid(column=1, row=1, sticky='w')
|
passe.grid(column=1, row=1, sticky='w')
|
||||||
Label(enfant, text="Métier :").grid(column=0, row=2, sticky='e')
|
# Nom
|
||||||
metier = Entry(enfant)
|
Label(enfant, text="Nom :").grid(column=0, row=2, sticky='e')
|
||||||
metier.grid(column=1, row=2, sticky='w')
|
Label(enfant, text="Pas de caractères spéciaux", font=("Arial", 10, "italic")).grid(column=2, row=2, sticky='w')
|
||||||
Label(enfant, text="Nom :").grid(column=0, row=3, sticky='e')
|
|
||||||
nom = Entry(enfant)
|
nom = Entry(enfant)
|
||||||
nom.grid(column=1, row=3, sticky='w')
|
nom.grid(column=1, row=2, sticky='w')
|
||||||
Label(enfant, text="Prénom :").grid(column=0, row=4, sticky='e')
|
# Prénom
|
||||||
|
Label(enfant, text="Prénom :").grid(column=0, row=3, sticky='e')
|
||||||
|
Label(enfant, text="Pas de caractères spéciaux", font=("Arial", 10, "italic")).grid(column=2, row=3, sticky='w')
|
||||||
prenom = Entry(enfant)
|
prenom = Entry(enfant)
|
||||||
prenom.grid(column=1, row=4, sticky='w')
|
prenom.grid(column=1, row=3, sticky='w')
|
||||||
Label(enfant, text="Date de naissance :").grid(column=0, row=5, sticky='e')
|
# Date de naissance
|
||||||
|
Label(enfant, text="Date de naissance :").grid(column=0, row=4, sticky='e')
|
||||||
|
Label(enfant, text="Format : AAAA/MM/JJ", font=("Arial", 10, "italic")).grid(column=2, row=4, sticky='w')
|
||||||
naissance = Entry(enfant)
|
naissance = Entry(enfant)
|
||||||
naissance.grid(column=1, row=5, sticky='w')
|
naissance.grid(column=1, row=4, sticky='w')
|
||||||
Label(enfant, text="Adresse").grid(column=0, row=6, sticky='e')
|
# Adresse
|
||||||
|
Label(enfant, text="Adresse").grid(column=0, row=5, sticky='e')
|
||||||
adresse = Entry(enfant)
|
adresse = Entry(enfant)
|
||||||
adresse.grid(column=1, row=6, sticky='w')
|
adresse.grid(column=1, row=5, sticky='w')
|
||||||
Label(enfant, text="Code postal :").grid(column=0, row=7, sticky='e')
|
# Code postal
|
||||||
|
Label(enfant, text="Code postal :").grid(column=0, row=6, sticky='e')
|
||||||
|
Label(enfant, text="5 chiffres", font=("Arial", 10, "italic")).grid(column=2, row=6, sticky='w')
|
||||||
postal = Entry(enfant)
|
postal = Entry(enfant)
|
||||||
postal.grid(column=1, row=7, sticky='w')
|
postal.grid(column=1, row=6, sticky='w')
|
||||||
|
|
||||||
def ___viderChamps():
|
def ___viderChamps():
|
||||||
"""Vide tout les champs de leur contenu"""
|
"""Vide tout les champs de leur contenu"""
|
||||||
|
|
Reference in a new issue