summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/database')
-rw-r--r--src/database/dbadmin.py2
-rw-r--r--src/database/dbmain.py71
-rw-r--r--src/database/dbmission.py2
-rw-r--r--src/database/dbsearch.py10
-rw-r--r--src/database/dbuser.py23
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: