diff options
Diffstat (limited to 'src/database')
| -rw-r--r-- | src/database/dbadmin.py | 8 | ||||
| -rw-r--r-- | src/database/dbmain.py | 8 | ||||
| -rw-r--r-- | src/database/dbmission.py | 70 | ||||
| -rw-r--r-- | src/database/dbsearch.py | 18 | ||||
| -rw-r--r-- | src/database/dbuser.py | 54 |
5 files changed, 67 insertions, 91 deletions
diff --git a/src/database/dbadmin.py b/src/database/dbadmin.py index 6fcd3f5..76e31b4 100644 --- a/src/database/dbadmin.py +++ b/src/database/dbadmin.py @@ -7,10 +7,11 @@ ############################################################################ # Import de dbmain -from src.database import dbmain +from src.database.dbmain import DbMain + # Extension de cette classe avec dbmain -class DbAdmin(dbmain.DbMain): +class DbAdmin(DbMain): # **************************************************************************** # GESTION DES UTILISATEURS DANS L'ADMIN @@ -26,6 +27,7 @@ class DbAdmin(dbmain.DbMain): result = self.cur.fetchall() return result + # https:#stackoverflow.com/questions/1361340/how-can-i-do-insert-if-not-exists-in-mysql # Suppresion d'un utilisateur def del_user_by_userid(self, userId: int) -> int: @@ -103,6 +105,7 @@ class DbAdmin(dbmain.DbMain): # Retourne 0 pour échec return 0 + # Suppresion d'un utilisateur def del_job_category_by_jobid(self, jobId: int) -> int: # Préparation de la requète pour voir si l'utilisateur existe @@ -133,6 +136,7 @@ class DbAdmin(dbmain.DbMain): # Retourne 0 pour échec return 0 + # **************************************************************************** # GESTION DES MISSIONS DANS L'ADMIN # **************************************************************************** diff --git a/src/database/dbmain.py b/src/database/dbmain.py index 53c368c..4344e23 100644 --- a/src/database/dbmain.py +++ b/src/database/dbmain.py @@ -141,6 +141,7 @@ class DbMain(): TABLEUSERJOB = "userJob" TABLEMISSION = "mission" + # **************************************************************************** # FONCTIONS PRINCIPALES # **************************************************************************** @@ -149,11 +150,13 @@ class DbMain(): reqInitDb = "CREATE DATABASE IF NOT EXISTS " + self.DATABASE self.cur.execute(reqInitDb) + # Sélection de la DB 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) -> None: # userAccount @@ -172,16 +175,19 @@ class DbMain(): reqInitMission = self.CREATETABLEMISSION self.cur.execute(reqInitMission) + # Déclenche les méthodes pour créer la BDD def init(self) -> None: self.create_db() self.select_db() self.create_table() + # Chiffre la data reçue 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: str, arg: list = None, commit: bool = False) -> None: @@ -195,6 +201,7 @@ class DbMain(): else: self.cur.execute(req) + # Vérifie si l'email existe dans la table userAccount de la BDD def check_exist_email(self, email: str) -> int: reqCheckEmailExist = "SELECT EXISTS(SELECT * FROM " + \ @@ -203,6 +210,7 @@ class DbMain(): # 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: diff --git a/src/database/dbmission.py b/src/database/dbmission.py index 9d23288..0bb73e0 100644 --- a/src/database/dbmission.py +++ b/src/database/dbmission.py @@ -10,18 +10,18 @@ # https:#www.freecodecamp.org/news/sql-joins-tutorial/ # Import de dbmain -from src.database import dbmain +from src.database.dbmain import DbMain from datetime import datetime # Extension de cette classe avec dbmain -class DbMission(dbmain.DbMain): +class DbMission(DbMain): # **************************************************************************** # ENREGISTREMENT ET VALIDATION DES MISSIONS # **************************************************************************** # Enregistrement d'une mission - def register_mission(self, subject, clientId, proId, jobId): + def register_mission(self, subject: str, clientId: int, proId: int, jobId: int) -> int: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ INSERT INTO """ + self.TABLEMISSION + """ @@ -29,18 +29,17 @@ class DbMission(dbmain.DbMain): VALUES (%s, %s, %s, %s, %s)""" # Exécution de la requète - self.exec_cmd(reqAddMission, - [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - subject, - clientId, - proId, - jobId - ] - ) + self.exec_cmd( + reqAddMission, + [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + subject, clientId, proId, jobId], + True + ) return 1 + # Enregistrement d'une mission - def accept_mission_by_missionid(self, missionId): + def accept_mission_by_missionid(self, missionId: int) -> int: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE @@ -50,10 +49,15 @@ class DbMission(dbmain.DbMain): WHERE missionId = %s""" # Exécution de la requète - self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) + self.exec_cmd( + reqAddMission, + [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], + True + ) return 1 - def validate_mission_pro_by_missionid(self, missionId): + + def validate_mission_pro_by_missionid(self, missionId: int) -> int: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE @@ -63,10 +67,15 @@ class DbMission(dbmain.DbMain): WHERE missionId = %s""" # Exécution de la requète - self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) + self.exec_cmd( + reqAddMission, + [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], + True + ) return 1 - def validate_mission_client_by_missionid(self, missionId): + + def validate_mission_client_by_missionid(self, missionId: int) -> int: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE @@ -76,9 +85,14 @@ class DbMission(dbmain.DbMain): WHERE missionId = %s""" # Exécution de la requète - self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) + self.exec_cmd( + reqAddMission, + [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], + True + ) return 1 + def review_mission(self, missionId: int, review: str, note: int) -> None: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ @@ -91,11 +105,12 @@ class DbMission(dbmain.DbMain): # Exécution de la requète self.exec_cmd(reqAddMission, [review, note, missionId], True) + # **************************************************************************** # RECUPERATION DES INFORMATIONS RELATIVES AUX MISSIONS # **************************************************************************** # Récupérations des missions d'un pro par son id - def get_mission_by_proid(self, proId): + def get_mission_by_proid(self, proId: int) -> list: reqGetMissionsProId = """ SELECT missionId, date, subject, note, review, @@ -113,8 +128,9 @@ class DbMission(dbmain.DbMain): result = self.cur.fetchall() return result + # Récupérations des missions d'un client par son id - def get_mission_by_clientid(self, clientId): + def get_mission_by_clientid(self, clientId: int) -> list: reqGetMissionsClientId = """ SELECT missionId, date, subject, note, review, @@ -132,6 +148,7 @@ class DbMission(dbmain.DbMain): result = self.cur.fetchall() return result + # Récupérations des missions d'un client par son id def get_all_missions(self): reqGetAllMission = """ @@ -142,18 +159,3 @@ class DbMission(dbmain.DbMain): self.exec_cmd(reqGetAllMission) result = self.cur.fetchall() return result - - # Compte le nombre de mission d'un consultant par son nom - def count_pro_missions_by_proid(self, proId): - reqCountMission = """ - SELECT COUNT(*) FROM - """ + self.TABLEMISSION + """ - INNER JOIN - """ + self.TABLEUSERINFO + """ - ON - """ + self.TABLEMISSION + """.proId = """ + self.TABLEUSERINFO + """.userId - WHERE - proId = %s""" - self.exec_cmd(reqCountMission, [proId]) - result = self.cur.fetchall() - return result diff --git a/src/database/dbsearch.py b/src/database/dbsearch.py index 0561c9d..62316f4 100644 --- a/src/database/dbsearch.py +++ b/src/database/dbsearch.py @@ -9,11 +9,11 @@ # https:#www.freecodecamp.org/news/sql-joins-tutorial/ # Import de dbmain -from src.database import dbmain +from src.database.dbmain import DbMain # Extension de cette classe avec dbmain -class DbSearch(dbmain.DbMain): +class DbSearch(DbMain): # **************************************************************************** # RECUPERATION DES INFORMATIONS RELATIVES AUX UTILISATEURS # **************************************************************************** @@ -43,10 +43,11 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqGetUserInfo, [userId]) return self.cur.fetchall() + # **************************************************************************** # RECUPERATION DES INFORMATIONS RELATIVES AUX PROS # **************************************************************************** - def get_all_pro_by_jobid(self, jobId): + def get_all_pro_by_jobid(self, jobId: int) -> list: reqSearchConsultant = """ SELECT """ + self.TABLEUSERINFO + """.userId, @@ -62,8 +63,9 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqSearchConsultant, [jobId]) return self.cur.fetchall() + # Récupération des infos d'un pro par son nom - def get_pro_info_by_lastname(self, lastname): + def get_pro_info_by_lastname(self, lastname: str) -> list: reqSearchConsultant = """ SELECT """ + self.TABLEUSERINFO + """.userId, @@ -81,8 +83,9 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqSearchConsultant, [lastname]) return self.cur.fetchall() + # Récupération des emploies associés à un pro - def get_pro_job_by_proid(self, proId): + def get_pro_job_by_proid(self, proId: int) -> list: reqGetAll = """ SELECT """ + self.TABLEUSERJOB + """.jobCategoryId, @@ -98,8 +101,9 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqGetAll, [proId]) return self.cur.fetchall() + # Récupération des notes d'un consultant par son nom - def get_pro_note_by_proid(self, proId): + def get_pro_note_by_proid(self, proId: int) -> list: reqCountMission = """ SELECT note @@ -114,6 +118,7 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqCountMission, [proId]) return self.cur.fetchall() + # **************************************************************************** # RECUPERATION DES INFORMATIONS RELATIVES AUX EMPLOIS # **************************************************************************** @@ -127,6 +132,7 @@ class DbSearch(dbmain.DbMain): self.exec_cmd(reqGetAllJobs) return self.cur.fetchall() + # Récupérer toutes les infos de la table jobCategory def get_job_by_jobid(self, jobId: int) -> list: reqGetJobinfo = """ diff --git a/src/database/dbuser.py b/src/database/dbuser.py index 9fbfeb6..bc89f8a 100644 --- a/src/database/dbuser.py +++ b/src/database/dbuser.py @@ -10,10 +10,11 @@ from datetime import datetime from passlib.hash import sha512_crypt # Import de dbmain -from src.database import dbmain +from src.database.dbmain import DbMain + # Extension de cette classe avec dbmain -class DbUser(dbmain.DbMain): +class DbUser(DbMain): # **************************************************************************** # GESTION DES UTILISATEURS @@ -48,8 +49,9 @@ class DbUser(dbmain.DbMain): # Retourne 0 pour échec return 0 + # Vérification de la combinaison email - pass pour authentification - def check_user_credential(self, email, password): + def check_user_credential(self, email: str, password: str) -> int: # Préparation de la requète pour récupérer les infos ou l'email est présent reqCheckCredential = """ SELECT @@ -110,49 +112,3 @@ class DbUser(dbmain.DbMain): self.exec_cmd(reqAddInfoProJobs, [i, userId], True) for i in jobsRemoved: self.exec_cmd(reqRemoveInfoProJobs, [i, userId], True) - - # **************************************************************************** - # GESTION DU TOKEN AUTOLOGIN - # **************************************************************************** - # Vérification de la combinaison email - jeton d'auto-login pour authentification - def check_token_autologin(self, email, token): - # Préparation de la requète pour récupérer les infos ou l'email est présent - reqCheckToken = """ - SELECT - userId, tokenAutoLogin - FROM - """ + self.TABLEUSERACCOUNT + """ - WHERE - email = %s""" - # Exécution de la requète - self.exec_cmd(reqCheckToken, [email]) - result = self.cur.fetchone() - # Vérifiaction de correspondance email & jeton d'auto-connection - if result and result[1] == token: - return result[0] - - # Mise à jour du jeton d'auto-login - def update_token_autologin(self, email, token): - # Préparation de la requète pour mise à jour du jeton d'auto-connection - reqUpdateToken = """ - UPDATE - """ + self.TABLEUSERACCOUNT + """ - SET - tokenAutoLogin = %s - WHERE - email = %s""" - # Execution de la requète - self.exec_cmd(reqUpdateToken, [token, email]) - - # Supression du jeton d'auto-login - def del_token_autologin(self, email): - # Préparation de la requète pour supression du jeton d'auto-connection - reqDeleteToken = """ - UPDATE - """ + self.TABLEUSERACCOUNT + """ - SET - tokenAutoLogin = NULL - WHERE - email = %s""" - # Execution de la requète - self.exec_cmd(reqDeleteToken, [email]) |
