2021-11-18 20:40:34 +01:00
|
|
|
from db import BaseDeDonnees
|
|
|
|
|
|
|
|
class Utilisateurs(BaseDeDonnees):
|
|
|
|
"""Gère une table "utilisateurs" pour une base de donnée donné."""
|
|
|
|
def __init__(self):
|
2021-11-20 12:02:38 +01:00
|
|
|
super().__init__(r"db.sqlite3")
|
2021-11-18 20:40:34 +01:00
|
|
|
|
|
|
|
def creationTable(self) -> None:
|
|
|
|
"""Créer la table qui stocker les utilisateurs."""
|
|
|
|
requete = """
|
|
|
|
CREATE TABLE IF NOT EXISTS utilisateurs (
|
2021-11-19 00:09:19 +01:00
|
|
|
id INTEGER PRIMARY KEY,
|
|
|
|
pseudo TEXT,
|
2021-11-18 20:40:34 +01:00
|
|
|
passe TEXT,
|
2021-11-19 00:09:19 +01:00
|
|
|
metier INTEGER,
|
|
|
|
nom TEXT,
|
|
|
|
prenom TEXT,
|
|
|
|
naissance TEXT,
|
|
|
|
adresse TEXT,
|
2021-11-24 16:11:27 +01:00
|
|
|
postal INTEGER,
|
|
|
|
date INTEGER,
|
2021-11-24 16:27:11 +01:00
|
|
|
stats_journaliere REAL
|
2021-11-18 20:40:34 +01:00
|
|
|
);
|
|
|
|
"""
|
|
|
|
self.requete(requete)
|
2021-11-18 21:56:03 +01:00
|
|
|
# Ajout d'un utilisateur par défaut si aucun utilisateur n'existe dans la base de donnée
|
2021-11-19 00:09:19 +01:00
|
|
|
if len(self.listUtilisateurs()) == 0:
|
2021-11-20 19:47:18 +01:00
|
|
|
self.ajoutUtilisateur(
|
2021-11-19 00:09:19 +01:00
|
|
|
pseudo="admin",
|
|
|
|
passe="P@ssword",
|
|
|
|
metier=0,
|
|
|
|
nom="Admin",
|
2021-11-19 23:54:51 +01:00
|
|
|
prenom="Système",
|
2021-11-19 00:09:19 +01:00
|
|
|
naissance="2000/10/09",
|
|
|
|
adresse="12 Rue de Montmartre",
|
|
|
|
postal=46800
|
|
|
|
)
|
2021-11-18 20:40:34 +01:00
|
|
|
|
2021-11-24 16:27:11 +01:00
|
|
|
def ajoutUtilisateur(self, pseudo: str, passe: str, metier: int, nom: str, prenom: str, naissance: str, adresse: str, postal: int, date: int = None, statsJournaliere: float = 0.) -> list:
|
2021-11-18 20:40:34 +01:00
|
|
|
"""Ajoute un utilisateur et retourne l'ID de ce dernier."""
|
|
|
|
requete = """
|
|
|
|
INSERT INTO utilisateurs (
|
2021-11-24 16:27:11 +01:00
|
|
|
pseudo, passe, metier, nom, prenom, naissance, adresse, postal, date, stats_journaliere
|
2021-11-18 20:40:34 +01:00
|
|
|
) VALUES (
|
2021-11-24 16:11:27 +01:00
|
|
|
?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
2021-11-18 20:40:34 +01:00
|
|
|
);
|
|
|
|
"""
|
2021-11-24 16:27:11 +01:00
|
|
|
self.requete(requete, [pseudo.lower(), passe, metier, nom.upper(), prenom.capitalize(), naissance, adresse, postal, date, statsJournaliere])
|
2021-11-18 20:40:34 +01:00
|
|
|
return self.affichageResultat(self.requete("SELECT last_insert_rowid();"))
|
|
|
|
|
2021-11-19 11:12:28 +01:00
|
|
|
def suppressionUtilisateurs(self, pseudo: str) -> None:
|
2021-11-18 20:40:34 +01:00
|
|
|
"""Supprime un utilisateur."""
|
|
|
|
requete = """
|
|
|
|
DELETE FROM utilisateurs
|
2021-11-19 11:12:28 +01:00
|
|
|
WHERE pseudo = ?
|
2021-11-18 20:40:34 +01:00
|
|
|
"""
|
2021-11-19 11:12:28 +01:00
|
|
|
self.requete(requete, pseudo)
|
2021-11-18 20:40:34 +01:00
|
|
|
|
2021-11-19 23:54:51 +01:00
|
|
|
def verificationIdentifiants(self, pseudo: str, motDePasse: str):
|
|
|
|
"""
|
|
|
|
Retourne l'ID de l'utilisateur si trouvé dans la base de donnée ainsi
|
|
|
|
que son métier (`tuple`), sinon renvoie `(0,)`.
|
|
|
|
"""
|
2021-11-18 20:40:34 +01:00
|
|
|
requete = """
|
2021-11-19 23:54:51 +01:00
|
|
|
SELECT id, metier FROM utilisateurs
|
|
|
|
WHERE pseudo = ? AND passe = ?
|
2021-11-18 20:40:34 +01:00
|
|
|
"""
|
2021-11-21 02:28:52 +01:00
|
|
|
reponseBaseDeDonnee = self.affichageResultat(self.requete(requete, [pseudo.lower(), motDePasse]))
|
2021-11-19 23:54:51 +01:00
|
|
|
if len(reponseBaseDeDonnee) == 0: # si les identifiants renseignés sont mauvais
|
|
|
|
return (0,)
|
|
|
|
return reponseBaseDeDonnee[0]
|
2021-11-18 20:40:34 +01:00
|
|
|
|
|
|
|
def listUtilisateurs(self) -> list:
|
2021-11-20 18:09:34 +01:00
|
|
|
"""Retourne la liste des nom d'utilisateurs (avec leur métier)."""
|
2021-11-18 20:40:34 +01:00
|
|
|
requete = """
|
2021-11-20 18:09:34 +01:00
|
|
|
SELECT pseudo, metier FROM utilisateurs
|
2021-11-18 20:40:34 +01:00
|
|
|
"""
|
2021-11-20 18:09:34 +01:00
|
|
|
return self.affichageResultat(self.requete(requete))
|
2021-11-19 23:54:51 +01:00
|
|
|
|
2021-11-20 02:37:44 +01:00
|
|
|
def recuperationUtilisateur(self, id: int = None, pseudo: str = None) -> dict:
|
2021-11-24 17:08:48 +01:00
|
|
|
"""Retourne les informations d'un utilisateur grâce à son ID ou son pseudo (ID en priorité)."""
|
2021-11-20 00:58:38 +01:00
|
|
|
recuperation = [
|
|
|
|
"pseudo",
|
|
|
|
"passe",
|
|
|
|
"metier",
|
|
|
|
"nom",
|
|
|
|
"prenom",
|
|
|
|
"naissance",
|
|
|
|
"adresse",
|
2021-11-24 16:11:27 +01:00
|
|
|
"postal",
|
|
|
|
"date",
|
2021-11-24 16:27:11 +01:00
|
|
|
"stats_journaliere"
|
2021-11-20 00:58:38 +01:00
|
|
|
]
|
2021-11-20 02:37:44 +01:00
|
|
|
if not id: # si la variable `id` n'est pas définie
|
2021-11-24 17:08:48 +01:00
|
|
|
if not pseudo: # si seul la variable `pseudo` n'est pas définie
|
2021-11-20 02:37:44 +01:00
|
|
|
raise ValueError # Aucun utilisateur renseigné
|
|
|
|
else: # si un pseudo est renseigné, c'est ce qu'on va utilisé
|
|
|
|
requete = f"""
|
|
|
|
SELECT {", ".join(recuperation)} FROM utilisateurs
|
|
|
|
WHERE pseudo = ?
|
|
|
|
"""
|
|
|
|
utilisateur = pseudo
|
|
|
|
else: # si un id est renseigné, c'est ce qu'on va utilisé
|
|
|
|
requete = f"""
|
|
|
|
SELECT {", ".join(recuperation)} FROM utilisateurs
|
|
|
|
WHERE id = ?
|
|
|
|
"""
|
|
|
|
utilisateur = id
|
|
|
|
return self.affichageResultatDictionnaire(recuperation, self.requete(requete, utilisateur))
|
2021-11-21 02:20:50 +01:00
|
|
|
|
|
|
|
def utilisateurExistant(self, utilisateur: str) -> bool:
|
2021-11-28 11:46:12 +01:00
|
|
|
"""Vérifie si l'utilisateur donnée existe déjà dans la base de donnée."""
|
2021-11-21 02:20:50 +01:00
|
|
|
requete = """
|
|
|
|
SELECT EXISTS (
|
|
|
|
SELECT 1 FROM utilisateurs
|
|
|
|
WHERE pseudo = ?
|
|
|
|
)
|
|
|
|
"""
|
2021-11-21 02:28:52 +01:00
|
|
|
return True if self.affichageResultat(self.requete(requete, utilisateur.lower()))[0][0] == 1 else False
|