summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/database')
-rw-r--r--src/database/dbadmin.py8
-rw-r--r--src/database/dbmain.py8
-rw-r--r--src/database/dbmission.py70
-rw-r--r--src/database/dbsearch.py18
-rw-r--r--src/database/dbuser.py54
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])