diff options
Diffstat (limited to 'src/database')
| -rw-r--r-- | src/database/dbadmin.py | 2 | ||||
| -rw-r--r-- | src/database/dbmain.py | 71 | ||||
| -rw-r--r-- | src/database/dbmission.py | 2 | ||||
| -rw-r--r-- | src/database/dbsearch.py | 10 | ||||
| -rw-r--r-- | src/database/dbuser.py | 23 |
5 files changed, 64 insertions, 44 deletions
diff --git a/src/database/dbadmin.py b/src/database/dbadmin.py index dd6b4d0..7463021 100644 --- a/src/database/dbadmin.py +++ b/src/database/dbadmin.py @@ -7,7 +7,7 @@ ############################################################################ # Import de dbmain -from . import dbmain +from src.database import dbmain # Extension de cette classe avec dbmain class DbAdmin(dbmain.DbMain): diff --git a/src/database/dbmain.py b/src/database/dbmain.py index 602cec6..1dbb301 100644 --- a/src/database/dbmain.py +++ b/src/database/dbmain.py @@ -6,8 +6,10 @@ # # ############################################################################ +from types import NoneType import mysql.connector from passlib.hash import sha512_crypt +from PyQt5.QtWidgets import QMessageBox # const si CAPS # https://www.w3schools.com/python/python_mysql_getstarted.asp @@ -142,37 +144,18 @@ class DbMain(): # **************************************************************************** # FONCTIONS PRINCIPALES # **************************************************************************** - # Constructeur, fonction "auto" déclenchée à l'instanciation - def __init__(self): - if self.DEBUG: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE, - raise_on_warnings=self.DEBUG - ) - else: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE - ) - self.cur = self.conn.cursor() - # Création de la DB si elle n'existe pas - def create_db(self): + def create_db(self) -> None: reqInitDb = "CREATE DATABASE IF NOT EXISTS " + self.DATABASE self.cur.execute(reqInitDb) # Sélection de la DB - def select_db(self): + def select_db(self) -> None: reqSelectDb = "USE " + self.DATABASE self.cur.execute(reqSelectDb) # Création des tables si elles n'existent pas - def create_table(self): + def create_table(self) -> None: # userAccount reqInitUserAccount = self.CREATETABLEUSERACCOUNT self.cur.execute(reqInitUserAccount) @@ -190,28 +173,64 @@ class DbMain(): self.cur.execute(reqInitMission) # Déclenche les méthodes pour créer la BDD - def init(self): + def init(self) -> None: self.create_db() self.select_db() self.create_table() # Chiffre la data reçue - def crypt_pass(self, password): + def crypt_pass(self, password: str) -> str: return sha512_crypt.hash(password, rounds=10000) # Prépare la requète pour mitiger (se protéger) les injections SQL et # initialise si nécessaire la BDD à chaque requète - def exec_cmd(self, req, arg=None): + def exec_cmd(self, req: str, arg: list = None, commit: bool = False) -> None: self.init() if arg: self.cur.execute(req, arg) + if commit: + self.conn.commit() else: self.cur.execute(req) # Vérifie si l'email existe dans la table userAccount de la BDD - def check_exist_email(self, email): + def check_exist_email(self, email: str) -> int: reqCheckEmailExist = "SELECT EXISTS(SELECT * FROM " + \ self.TABLEUSERACCOUNT + " WHERE email = %s)" self.exec_cmd(reqCheckEmailExist, [email]) # Retourne 1 si existe, sinon 0 return self.cur.fetchall()[0][0] + + # Constructeur, fonction "auto" déclenchée à l'instanciation + def __init__(self, mainWindow) -> None: + try: + if self.DEBUG: + self.conn = mysql.connector.connect( + host=self.HOST, + user=self.USER, + password=self.PASSWORD, + database=self.DATABASE, + raise_on_warnings=self.DEBUG + ) + else: + self.conn = mysql.connector.connect( + host=self.HOST, + user=self.USER, + password=self.PASSWORD, + database=self.DATABASE + ) + self.cur = self.conn.cursor() + except mysql.connector.errors.DatabaseError as e: + if self.DEBUG: + QMessageBox.warning( + mainWindow, + "Erreur avec la BDD", + str(e) + ) + else: + QMessageBox.warning( + mainWindow, + "Erreur avec la BDD", + "Veuillez vérifier si la BDD est accessible." + ) + exit(1) diff --git a/src/database/dbmission.py b/src/database/dbmission.py index 0a33a12..7f6620e 100644 --- a/src/database/dbmission.py +++ b/src/database/dbmission.py @@ -10,7 +10,7 @@ # https:#www.freecodecamp.org/news/sql-joins-tutorial/ # Import de dbmain -from . import dbmain +from src.database import dbmain from datetime import datetime diff --git a/src/database/dbsearch.py b/src/database/dbsearch.py index 15d4a24..3089bf1 100644 --- a/src/database/dbsearch.py +++ b/src/database/dbsearch.py @@ -9,7 +9,7 @@ # https:#www.freecodecamp.org/news/sql-joins-tutorial/ # Import de dbmain -from . import dbmain +from src.database import dbmain # Extension de cette classe avec dbmain @@ -18,7 +18,7 @@ class DbSearch(dbmain.DbMain): # RECUPERATION DES INFORMATIONS RELATIVES AUX UTILISATEURS # **************************************************************************** # Récupération des infos d'un compte par son id - def get_user_account_by_userid(self, userId): + def get_user_account_by_userid(self, userId: int) -> list: reqSearchUser = """ SELECT userId, email, inscriptionDate, userStatus @@ -30,7 +30,7 @@ class DbSearch(dbmain.DbMain): return self.cur.fetchall() # Récupération des infos d'un utilisateur par son id - def get_user_info_by_userid(self, userId): + def get_user_info_by_userid(self, userId: int) -> list: reqGetUserInfo = """ SELECT userId, lastname, firstname, degree, @@ -118,7 +118,7 @@ class DbSearch(dbmain.DbMain): # RECUPERATION DES INFORMATIONS RELATIVES AUX EMPLOIS # **************************************************************************** # Récupérer toutes les infos de la table jobCategory - def get_job_all(self): + def get_job_all(self) -> list: reqGetAllJobs = """ SELECT * @@ -128,7 +128,7 @@ class DbSearch(dbmain.DbMain): return self.cur.fetchall() # Récupérer toutes les infos de la table jobCategory - def get_job_by_jobid(self, jobId): + def get_job_by_jobid(self, jobId: int) -> list: reqGetJobinfo = """ SELECT * diff --git a/src/database/dbuser.py b/src/database/dbuser.py index e0a62fb..e71d936 100644 --- a/src/database/dbuser.py +++ b/src/database/dbuser.py @@ -10,7 +10,7 @@ from datetime import datetime from passlib.hash import sha512_crypt # Import de dbmain -from . import dbmain +from src.database import dbmain # Extension de cette classe avec dbmain class DbUser(dbmain.DbMain): @@ -19,28 +19,29 @@ class DbUser(dbmain.DbMain): # GESTION DES UTILISATEURS # **************************************************************************** # Enregistrement d'un nouvel utilisateur - def register_user(self, email, password, userStatus): + def register_user(self, email: str, password: str, userStatus: int) -> int: # On vérifie si l'email existe deja dans la bdd exist = self.check_exist_email(email) # Si non if not exist: # Chiffrement du pass - hash = self.crypt_pass(password) + passwordHash = self.crypt_pass(password) # Préparation de la requète - reqAddUser = """"" + reqAddUser = """ INSERT INTO """ + self.TABLEUSERACCOUNT + """ (email, password, inscriptionDate, userStatus) VALUES (%s, %s, %s, %s)""" # Execution de la requète - self.exec_cmd(reqAddUser, - [email, - hash, - datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - userStatus - ] - ) + self.exec_cmd( + reqAddUser, + [email, + passwordHash, + datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + userStatus], + True + ) # Retourne 1 pour réussite return 1 else: |
