from db import BaseDeDonnees class Utilisateurs(BaseDeDonnees): """Gère une table "utilisateurs" pour une base de donnée donné.""" def __init__(self): super().__init__(r"utilisateurs.sqlite3") def creationTable(self) -> None: """Créer la table qui stocker les utilisateurs.""" requete = """ CREATE TABLE IF NOT EXISTS utilisateurs ( id INTEGER PRIMARY KEY, pseudo TEXT, passe TEXT, metier INTEGER, nom TEXT, prenom TEXT, naissance TEXT, adresse TEXT, postal INTEGER ); """ self.requete(requete) # Ajout d'un utilisateur par défaut si aucun utilisateur n'existe dans la base de donnée if len(self.listUtilisateurs()) == 0: self.ajoutUtilisateurs( pseudo="admin", passe="P@ssword", metier=0, nom="Admin", prenom="Admin", naissance="2000/10/09", adresse="12 Rue de Montmartre", postal=46800 ) def ajoutUtilisateurs(self, pseudo: str, passe: str, metier: int, nom: str, prenom: str, naissance: str, adresse: str, postal: str) -> list: """Ajoute un utilisateur et retourne l'ID de ce dernier.""" requete = """ INSERT INTO utilisateurs ( pseudo, passe, metier, nom, prenom, naissance, adresse, postal ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ); """ self.requete(requete, [pseudo, passe, metier, nom, prenom, naissance, adresse, postal]) return self.affichageResultat(self.requete("SELECT last_insert_rowid();")) def suppressionUtilisateurs(self, pseudo: str) -> None: """Supprime un utilisateur.""" requete = """ DELETE FROM utilisateurs WHERE pseudo = ? """ self.requete(requete, pseudo) def verificationIdentifiants(self, pseudo: str, motDePasse: str) -> bool: """Renvoie vrai ou faux si les identifiants données sont bons.""" requete = """ SELECT EXISTS ( SELECT 1 FROM utilisateurs WHERE pseudo = ? AND passe = ? ) """ # Vrai si le premier élément que renvoie la requête au dessus est 1 return True if self.affichageResultat(self.requete(requete, [pseudo, motDePasse]))[0][0] == 1 else False def listUtilisateurs(self) -> list: """Retourne la liste des nom d'utilisateurs.""" requete = """ SELECT pseudo 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))]