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 (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):
|
||||
"""Gère la connexion aux différentes interfaces de l'application."""
|
||||
"""
|
||||
|
@ -72,7 +110,7 @@ class GesMag:
|
|||
return
|
||||
|
||||
# Redirection vers la bonne interface
|
||||
utilisateurBaseDeDonnee = Utilisateurs().verificationIdentifiants(utilisateur.lower(), motDePasse)
|
||||
utilisateurBaseDeDonnee = Utilisateurs().verificationIdentifiants(utilisateur, motDePasse)
|
||||
if utilisateurBaseDeDonnee[0] > 0:
|
||||
if utilisateurBaseDeDonnee[1] == 0: # si le métier est "Manager"
|
||||
self._interfaceManager(utilisateurBaseDeDonnee[0])
|
||||
|
@ -181,52 +219,112 @@ class GesMag:
|
|||
"""
|
||||
enfant = Toplevel(self.f)
|
||||
enfant.title(f"Ajouter un {'manager' if metier == 0 else 'caissier'}")
|
||||
self.dimensionsFenetre(enfant, 330, 220)
|
||||
self.dimensionsFenetre(enfant, 640, 200)
|
||||
|
||||
def ___verification():
|
||||
"""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
|
||||
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
|
||||
pass
|
||||
# vérification pour le métier
|
||||
pass
|
||||
if self.motDePasseCorrect(passe.get())[0] == False:
|
||||
ok = False
|
||||
mauvaisChamps.append(passe)
|
||||
# vérification pour le nom
|
||||
pass
|
||||
if self.nomCorrect(nom.get()) == False:
|
||||
ok = False
|
||||
mauvaisChamps.append(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
|
||||
pass
|
||||
if self.naissanceCorrect(naissance.get()) == False:
|
||||
ok = False
|
||||
mauvaisChamps.append(naissance)
|
||||
# vérification pour l'adresse
|
||||
pass
|
||||
if self.adresseCorrect(adresse.get()) == False:
|
||||
ok = False
|
||||
mauvaisChamps.append(adresse)
|
||||
# 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="Pas de caractères spéciaux", font=("Arial", 10, "italic")).grid(column=2, row=0, sticky='w')
|
||||
pseudo = Entry(enfant)
|
||||
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="1 majuscule, miniscule et caractère spécial minimum", font=("Arial", 10, "italic")).grid(column=2, row=1, sticky='w')
|
||||
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
|
||||
Label(enfant, text="Nom :").grid(column=0, row=2, sticky='e')
|
||||
Label(enfant, text="Pas de caractères spéciaux", font=("Arial", 10, "italic")).grid(column=2, row=2, sticky='w')
|
||||
nom = Entry(enfant)
|
||||
nom.grid(column=1, row=3, sticky='w')
|
||||
Label(enfant, text="Prénom :").grid(column=0, row=4, sticky='e')
|
||||
nom.grid(column=1, row=2, sticky='w')
|
||||
# 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.grid(column=1, row=4, sticky='w')
|
||||
Label(enfant, text="Date de naissance :").grid(column=0, row=5, sticky='e')
|
||||
prenom.grid(column=1, row=3, sticky='w')
|
||||
# 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.grid(column=1, row=5, sticky='w')
|
||||
Label(enfant, text="Adresse").grid(column=0, row=6, sticky='e')
|
||||
naissance.grid(column=1, row=4, sticky='w')
|
||||
# Adresse
|
||||
Label(enfant, text="Adresse").grid(column=0, row=5, 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')
|
||||
adresse.grid(column=1, row=5, sticky='w')
|
||||
# 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.grid(column=1, row=7, sticky='w')
|
||||
postal.grid(column=1, row=6, sticky='w')
|
||||
|
||||
def ___viderChamps():
|
||||
"""Vide tout les champs de leur contenu"""
|
||||
|
|
Reference in a new issue