summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-04-28 10:35:10 +0200
committerDebulois <quentin@debulois.fr>2022-04-28 10:35:10 +0200
commit503d62407ce57bebfec5e7134b603d50e58c48da (patch)
treeae83ded2ac5719bbebd5f6ad5d76b6a8cb1ef592
parent5e23fcc7de84adf23ea52ae0858f31b8934fabd3 (diff)
Ajout de la gestion en tant qu'administrateur
-rw-r--r--src/core/coreAdmin.py79
-rw-r--r--src/core/coreUser.py18
-rw-r--r--src/database/dbadmin.py64
-rw-r--r--src/database/dbmain.py2
-rw-r--r--src/gui/globalMenu.py28
-rw-r--r--src/gui/include/__init__.py0
-rw-r--r--src/gui/include/connexionInfo.py10
-rw-r--r--src/gui/include/menu.py16
-rw-r--r--src/gui/pageHome.py33
-rw-r--r--src/gui/pageLogin.py7
-rw-r--r--src/gui/pageRegister.py22
-rw-r--r--src/gui/ressources/icon.ico (renamed from src/gui/include/ressources/icon.ico)bin41662 -> 41662 bytes
-rw-r--r--src/gui/windowAdmin.py180
-rw-r--r--src/main.py4
14 files changed, 380 insertions, 83 deletions
diff --git a/src/core/coreAdmin.py b/src/core/coreAdmin.py
new file mode 100644
index 0000000..51fe75a
--- /dev/null
+++ b/src/core/coreAdmin.py
@@ -0,0 +1,79 @@
+
+from src.database import dbadmin
+from PyQt5.QtWidgets import QMessageBox
+
+
+def core_ajout_emploi(mainWindow: object, nomEn: str, nomFr: str) -> int:
+ admin = dbadmin.DbAdmin(mainWindow)
+ success = admin.register_job_category(nomEn, nomFr)
+ if success:
+ QMessageBox.information(
+ mainWindow,
+ "Ajout d'un emploi",
+ "Emploi ajouté!"
+ )
+ return 1
+ else:
+ QMessageBox.warning(
+ mainWindow,
+ "Ajout d'un emploi",
+ "Impossible d'ajouter cet emploi"
+ )
+ return 0
+
+
+def core_suppr_emploi(mainWindow: object, jobId: int) -> int:
+ admin = dbadmin.DbAdmin(mainWindow)
+ success = admin.del_job_category_by_jobid(jobId)
+ if success:
+ QMessageBox.information(
+ mainWindow,
+ "Suppresion d'un emploi",
+ "Emploi supprimé!"
+ )
+ return 1
+ else:
+ QMessageBox.warning(
+ mainWindow,
+ "Suppresion d'un emploi",
+ "Impossible de supprimer cet emploi"
+ )
+ return 0
+
+
+def core_suppr_user(mainWindow: object, userId: int) -> int:
+ admin = dbadmin.DbAdmin(mainWindow)
+ success = admin.del_user_by_userid(userId)
+ if success:
+ QMessageBox.information(
+ mainWindow,
+ "Suppresion d'un utilisateur",
+ "Utilisateur supprimé!"
+ )
+ return 1
+ else:
+ QMessageBox.warning(
+ mainWindow,
+ "Suppresion d'un utilisateur",
+ "Impossible de supprimer cet utilisateur"
+ )
+ return 0
+
+
+def core_suppr_mission(mainWindow: object, missionId: int) -> int:
+ admin = dbadmin.DbAdmin(mainWindow)
+ success = admin.del_mission_by_missionid(missionId)
+ if success:
+ QMessageBox.information(
+ mainWindow,
+ "Suppresion d'une mission",
+ "Mission supprimé!"
+ )
+ return 1
+ else:
+ QMessageBox.warning(
+ mainWindow,
+ "Suppresion d'une mission",
+ "Impossible de supprimer cette mission"
+ )
+ return 0
diff --git a/src/core/coreUser.py b/src/core/coreUser.py
index 28476ad..de9ccb8 100644
--- a/src/core/coreUser.py
+++ b/src/core/coreUser.py
@@ -26,7 +26,7 @@ def core_login(mainWindow, email, password) -> None:
mainWindow.userStatus = "Pro"
elif search[0][3] == 2:
mainWindow.userStatus = "Client"
- pageHome.main(mainWindow)
+ pageHome.main(mainWindow, True)
else:
QMessageBox.warning(
mainWindow,
@@ -41,6 +41,22 @@ def core_login(mainWindow, email, password) -> None:
)
+def core_logout(mainWindow) -> None:
+ if mainWindow.userConnected == True:
+ mainWindow.userConnected = False
+ mainWindow.userId = ""
+ mainWindow.userEmail = ""
+ mainWindow.userInscriptionDate = ""
+ mainWindow.userStatus = ""
+
+ QMessageBox.information(
+ mainWindow,
+ "Déconnection",
+ "Vous êtes déconnecté."
+ )
+ pageHome.main(mainWindow, True)
+
+
def core_register(mainWindow, email, password, userStatus) -> None:
user = dbuser.DbUser(mainWindow)
regNumb = "[0-9]"
diff --git a/src/database/dbadmin.py b/src/database/dbadmin.py
index 7463021..7b00cd5 100644
--- a/src/database/dbadmin.py
+++ b/src/database/dbadmin.py
@@ -16,45 +16,37 @@ class DbAdmin(dbmain.DbMain):
# GESTION DES UTILISATEURS DANS L'ADMIN
# ****************************************************************************
# Récupérer toutes les infos de la table userAccount
- def get_all_users_account(self):
- reqGetAll = """
+ def get_all_users_account(self) -> list:
+ reqGetAll: str = """
SELECT
*
FROM
""" + self.TABLEUSERACCOUNT
- # https:#www.php.net/manual/fr/pdostatement.fetch.php
- # "PDO::FETCH_ASSOC: retourne un tableau indexé
- # par le nom de la colonne comme retourné dans le jeu de résultats"
self.exec_cmd(reqGetAll)
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):
+ def del_user_by_userid(self, userId: int) -> int:
# Préparation de la requète pour voir si l'utilisateur existe
# https:#stackoverflow.com/questions/1676551/best-way-to-test-if-a-row-exists-in-a-mysql-table
- reqCheckExistId = """
+ reqCheckExistId: str = """
SELECT EXISTS(
SELECT 1 FROM
""" + self.TABLEUSERACCOUNT + """
WHERE
- userId = ?
+ userId = %s
LIMIT 1
)"""
- # Exécution de la requète, fetchall pour avoir le résultat
- # https:#www.php.net/manual/fr/pdostatement.fetch.php
- # struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL])
- # PDO::FETCH_NUM : retourne un tableau indexé par le numéro de la colonne comme elle
- # est retourné dans votre jeu de résultat, commençant à 0
self.exec_cmd(reqCheckExistId, [userId])
reqResult = self.cur.fetchall()
# Si il existe
if (reqResult[0][0]):
# Préparation de la requète pour suppression
- reqDelUser = """DELETE FROM """ + self.TABLEUSERACCOUNT + """ WHERE userId = ?"""
+ reqDelUser: str = """DELETE FROM """ + self.TABLEUSERACCOUNT + """ WHERE userId = %s"""
# Exécution de la requète
- self.exec_cmd(reqDelUser, [userId])
+ self.exec_cmd(reqDelUser, [userId], True)
# Retourne 1 pour réussite
return 1
else:
@@ -66,14 +58,14 @@ class DbAdmin(dbmain.DbMain):
# GESTION DES EMPLOIS DANS L'ADMIN
# ****************************************************************************
# Ajout d'une categorie
- def register_job_category(self, jobNameEn, jobNameFr):
+ def register_job_category(self, jobNameEn: str, jobNameFr: str) -> int:
# Préparation et execution de la requète pour voir si la categorie existe en anglais
- reqCheckjobCategoryNameEn = """
+ reqCheckjobCategoryNameEn: str = """
SELECT EXISTS(
SELECT 1 FROM
""" + self.TABLEJOBCATEGORY + """
WHERE
- jobCategoryNameEn = ?
+ jobCategoryNameEn = %s
LIMIT 1
)"""
self.exec_cmd(reqCheckjobCategoryNameEn, [jobNameEn])
@@ -81,12 +73,12 @@ class DbAdmin(dbmain.DbMain):
# Si il n'existe pas en anglais
if not reqResultEn[0][0]:
# Préparation et execution de la requète pour voir si la categorie existe en Français
- reqCheckjobCategoryNameFr = """
+ reqCheckjobCategoryNameFr: str = """
SELECT EXISTS(
SELECT 1 FROM
""" + self.TABLEJOBCATEGORY + """
WHERE
- jobCategoryNameFr = ?
+ jobCategoryNameFr = %s
LIMIT 1
)"""
self.exec_cmd(reqCheckjobCategoryNameFr, [jobNameFr])
@@ -94,14 +86,14 @@ class DbAdmin(dbmain.DbMain):
# Si il n'existe pas en Français non plus
if not reqResultFr[0][0]:
# Préparation de la requète pour l'ajout
- reqjobCategoryNameAdd = """
+ reqjobCategoryNameAdd: str = """
INSERT INTO
""" + self.TABLEJOBCATEGORY + """
(jobCategoryNameEn, jobCategoryNameFr)
VALUES
- (? ,?)"""
+ (%s ,%s)"""
# Exécution de la requète
- self.exec_cmd(reqjobCategoryNameAdd, [jobNameEn, jobNameFr])
+ self.exec_cmd(reqjobCategoryNameAdd, [jobNameEn, jobNameFr], True)
# Retourne 1 pour réussite
return 1
else:
@@ -112,31 +104,29 @@ class DbAdmin(dbmain.DbMain):
return 0
# Suppresion d'un utilisateur
- def del_job_category_by_jobid(self, jobId):
+ def del_job_category_by_jobid(self, jobId: int) -> int:
# Préparation de la requète pour voir si l'utilisateur existe
- reqCheckExistId = """
+ reqCheckExistId: str = """
SELECT EXISTS(
SELECT 1 FROM
""" + self.TABLEJOBCATEGORY + """
WHERE
- jobCategoryId = ?
+ jobCategoryId = %s
LIMIT 1
)"""
# Exécution de la requète, fetchall pour avoir le résultat
- # struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL])
- # fetch_num pour casser l'index "req" en chiffre, dict -> list
self.exec_cmd(reqCheckExistId, [jobId])
reqResult = self.cur.fetchall()
# Si il existe
if (reqResult[0][0]):
# Préparation de la requète pour suppression
- reqDelJobCategory = """
+ reqDelJobCategory: str = """
DELETE FROM
""" + self.TABLEJOBCATEGORY + """
WHERE
- jobCategoryId = ?"""
+ jobCategoryId = %s"""
# Exécution de la requète
- self.exec_cmd(reqDelJobCategory, [jobId])
+ self.exec_cmd(reqDelJobCategory, [jobId], True)
# Retourne 1 pour réussite
return 1
else:
@@ -147,14 +137,14 @@ class DbAdmin(dbmain.DbMain):
# GESTION DES MISSIONS DANS L'ADMIN
# ****************************************************************************
# Suppresion d'une mission
- def del_mission_by_missionid(self, missionId):
+ def del_mission_by_missionid(self, missionId: int) -> int:
# Préparation de la requète pour voir si l'utilisateur existe
- reqCheckExistId = """
+ reqCheckExistId: str = """
SELECT EXISTS(
SELECT 1 FROM
""" + self.TABLEMISSION + """
WHERE
- missionId = ?
+ missionId = %s
LIMIT 1
)"""
# Exécution de la requète
@@ -163,13 +153,13 @@ class DbAdmin(dbmain.DbMain):
# Si il existe
if (reqResult[0][0]):
# Préparation de la requète pour suppression
- reqDelMission = """
+ reqDelMission: str = """
DELETE FROM
""" + self.TABLEMISSION + """
WHERE
- missionId = ?"""
+ missionId = %s"""
# Exécution de la requète
- self.exec_cmd(reqDelMission, [missionId])
+ self.exec_cmd(reqDelMission, [missionId], True)
# Retourne 1 pour réussite
return 1
else:
diff --git a/src/database/dbmain.py b/src/database/dbmain.py
index 1dbb301..53c368c 100644
--- a/src/database/dbmain.py
+++ b/src/database/dbmain.py
@@ -185,6 +185,8 @@ class DbMain():
# 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:
+ """Initie la BDD et execute la commande avec une list, ou pas, et commit
+ (apporter des modification a la BDD), ou pas."""
self.init()
if arg:
self.cur.execute(req, arg)
diff --git a/src/gui/globalMenu.py b/src/gui/globalMenu.py
new file mode 100644
index 0000000..b558ef3
--- /dev/null
+++ b/src/gui/globalMenu.py
@@ -0,0 +1,28 @@
+
+from os.path import join
+from pathlib import Path
+from PyQt5.QtGui import QIcon
+from PyQt5.QtWidgets import QAction
+from src.gui import windowAPropos, windowAdmin
+
+def init(mainWindow):
+ logo = join(Path(__file__).parent, "ressources", "icon.ico")
+ mainWindow.setWindowIcon(QIcon(logo))
+ mainWindow.setWindowTitle("Alphajob")
+ menu = mainWindow.menuBar()
+ menu.clear() # Clear au cas où
+ menuOptions = menu.addMenu("Options")
+ btnApropos = QAction("A propos", mainWindow)
+ btnApropos.triggered.connect(lambda: windowAPropos.main(mainWindow))
+ menuOptions.addAction(btnApropos)
+ if mainWindow.userConnected and mainWindow.userStatus == "Admin":
+ menuAdmin = menu.addMenu("Admin")
+ btnEmplois = QAction("Gestion des emplois", mainWindow)
+ btnEmplois.triggered.connect(lambda: windowAdmin.admin_emplois(mainWindow))
+ btnUsers = QAction("Gestion des Utilisateurs", mainWindow)
+ btnUsers.triggered.connect(lambda: windowAdmin.admin_users(mainWindow))
+ btnMissions = QAction("Gestion des missions", mainWindow)
+ btnMissions.triggered.connect(lambda: windowAdmin.admin_missions(mainWindow))
+ menuAdmin.addAction(btnEmplois)
+ menuAdmin.addAction(btnUsers)
+ menuAdmin.addAction(btnMissions)
diff --git a/src/gui/include/__init__.py b/src/gui/include/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/src/gui/include/__init__.py
+++ /dev/null
diff --git a/src/gui/include/connexionInfo.py b/src/gui/include/connexionInfo.py
deleted file mode 100644
index 8130f6f..0000000
--- a/src/gui/include/connexionInfo.py
+++ /dev/null
@@ -1,10 +0,0 @@
-
-from PyQt5.QtWidgets import QLabel
-
-def get_text(mainWindow) -> object:
- if not mainWindow.userConnected:
- connexionInfo = QLabel("Non connecté.")
- else:
- connexionInfo = QLabel(f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}")
-
- return connexionInfo
diff --git a/src/gui/include/menu.py b/src/gui/include/menu.py
deleted file mode 100644
index e5a6ddd..0000000
--- a/src/gui/include/menu.py
+++ /dev/null
@@ -1,16 +0,0 @@
-
-from os.path import join
-from pathlib import Path
-from PyQt5.QtGui import QIcon
-from PyQt5.QtWidgets import QAction
-from src.gui import windowAPropos
-
-def init(mainWindow):
- logo = join(Path(__file__).parent, "ressources", "icon.ico")
- mainWindow.setWindowIcon(QIcon(logo))
- menu = mainWindow.menuBar()
- menuOptions = menu.addMenu("Options")
- btnApropos = QAction("A propos", mainWindow)
- btnApropos.triggered.connect(lambda: windowAPropos.main(mainWindow))
- menuOptions.addAction(btnApropos)
- mainWindow.setWindowTitle("Alphajob")
diff --git a/src/gui/pageHome.py b/src/gui/pageHome.py
index 99ca956..016d374 100644
--- a/src/gui/pageHome.py
+++ b/src/gui/pageHome.py
@@ -3,28 +3,43 @@ from PyQt5.QtWidgets import (
QGroupBox, QPushButton,
QComboBox, QLineEdit,
QHBoxLayout, QWidget,
- QVBoxLayout
+ QVBoxLayout, QLabel
)
from src.database import dbsearch
-from src.gui import pageLogin, pageRegister
-from src.gui.include import connexionInfo
+from src.gui import pageLogin, pageRegister, globalMenu
from src.core.coreSearch import core_search_id, core_search_name
+from src.core.coreUser import core_logout
-def main(mainWindow) -> None:
+def main(mainWindow, reloadMenu = False) -> None:
+ if reloadMenu:
+ globalMenu.init(mainWindow)
+
classSearch = dbsearch.DbSearch(mainWindow)
- connexionState = connexionInfo.get_text(mainWindow)
+ if not mainWindow.userConnected:
+ connexionState = QLabel("Non connecté.")
+ else:
+ connexionState = QLabel(f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}")
+
+ if not mainWindow.userConnected:
+ btnConnexion = QPushButton("Connexion")
+ btnConnexion.clicked.connect(lambda: pageLogin.main(mainWindow))
+ else:
+ btnDeconnexion = QPushButton("Déconnexion")
+ btnDeconnexion.clicked.connect(lambda: core_logout(mainWindow))
- btnConnexion = QPushButton("Connexion")
- btnConnexion.clicked.connect(lambda: pageLogin.main(mainWindow))
btnInscription = QPushButton("Inscription")
btnInscription.clicked.connect(lambda: pageRegister.main(mainWindow))
layoutUser = QHBoxLayout()
layoutUser.addStretch()
- layoutUser.addWidget(btnConnexion)
layoutUser.addWidget(btnInscription)
+ if not mainWindow.userConnected:
+ layoutUser.addWidget(btnConnexion)
+ else:
+ layoutUser.addWidget(btnDeconnexion)
+
grpUtilisateur = QGroupBox("Gestion de l'utilisateur")
grpUtilisateur.setLayout(layoutUser)
@@ -64,7 +79,7 @@ def main(mainWindow) -> None:
layoutRecherche.addLayout(layoutRechercheCat)
layoutRecherche.addStretch()
- grpRecherche = QGroupBox("Recherche")
+ grpRecherche = QGroupBox("Recherche par nom ou emploi")
grpRecherche.setLayout(layoutRecherche)
layoutMain = QVBoxLayout()
diff --git a/src/gui/pageLogin.py b/src/gui/pageLogin.py
index d2b7f93..083ae84 100644
--- a/src/gui/pageLogin.py
+++ b/src/gui/pageLogin.py
@@ -4,17 +4,20 @@ from PyQt5.QtWidgets import (
QLineEdit, QWidget, QVBoxLayout, QGridLayout
)
from src.gui import pageHome, pageRegister
-from src.gui.include import connexionInfo
from src.core.coreUser import core_login
def main(mainWindow) -> None:
- connexionState = connexionInfo.get_text(mainWindow)
+ if not mainWindow.userConnected:
+ connexionState = QLabel("Non connecté.")
+ else:
+ connexionState = QLabel(f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}")
btnAccueil = QPushButton("Accueil")
btnAccueil.clicked.connect(lambda: pageHome.main(mainWindow))
btnInscription = QPushButton("Inscription")
btnInscription.clicked.connect(lambda: pageRegister.main(mainWindow))
+
layoutUser = QHBoxLayout()
layoutUser.addWidget(btnAccueil)
layoutUser.addStretch()
diff --git a/src/gui/pageRegister.py b/src/gui/pageRegister.py
index aef8ce1..f0fc392 100644
--- a/src/gui/pageRegister.py
+++ b/src/gui/pageRegister.py
@@ -4,23 +4,33 @@ from PyQt5.QtWidgets import (
QLineEdit, QWidget, QVBoxLayout, QComboBox, QGridLayout
)
from src.gui import pageHome, pageLogin
-from src.gui.include import connexionInfo
-from src.core.coreUser import core_register
+from src.core.coreUser import core_register, core_logout
def main(mainWindow) -> None:
- connexionState = connexionInfo.get_text(mainWindow)
+ if not mainWindow.userConnected:
+ connexionState = QLabel("Non connecté.")
+ else:
+ connexionState = QLabel(f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}")
btnAccueil = QPushButton("Accueil")
btnAccueil.clicked.connect(lambda: pageHome.main(mainWindow))
- btnConnexion = QPushButton("Connexion")
- btnConnexion.clicked.connect(lambda: pageLogin.main(mainWindow))
+ if not mainWindow.userConnected:
+ btnConnexion = QPushButton("Connexion")
+ btnConnexion.clicked.connect(lambda: pageLogin.main(mainWindow))
+ else:
+ btnDeconnexion = QPushButton("Déconnexion")
+ btnDeconnexion.clicked.connect(lambda: core_logout(mainWindow))
layoutUser = QHBoxLayout()
layoutUser.addWidget(btnAccueil)
layoutUser.addStretch()
- layoutUser.addWidget(btnConnexion)
+ if not mainWindow.userConnected:
+ layoutUser.addWidget(btnConnexion)
+ else:
+ layoutUser.addWidget(btnDeconnexion)
+
grpUtilisateur = QGroupBox("Gestion de l'utilisateur")
grpUtilisateur.setLayout(layoutUser)
diff --git a/src/gui/include/ressources/icon.ico b/src/gui/ressources/icon.ico
index 7c550a3..7c550a3 100644
--- a/src/gui/include/ressources/icon.ico
+++ b/src/gui/ressources/icon.ico
Binary files differ
diff --git a/src/gui/windowAdmin.py b/src/gui/windowAdmin.py
new file mode 100644
index 0000000..3996615
--- /dev/null
+++ b/src/gui/windowAdmin.py
@@ -0,0 +1,180 @@
+
+from PyQt5.QtWidgets import (
+ QDialog, QGroupBox, QLabel,
+ QLineEdit, QVBoxLayout, QHBoxLayout,
+ QGridLayout, QPushButton, QComboBox
+)
+from src.database import dbsearch, dbadmin, dbmission
+from src.core import coreAdmin
+
+
+class admin_emplois():
+ def cmb_populate(self, mainWindow: object , cmb: object) -> None:
+ # Instanciation DB
+ search: object = dbsearch.DbSearch(mainWindow)
+ allJobs: object = search.get_job_all()
+ cmb.clear()
+ for i in allJobs:
+ cmb.addItem(f"{i[2]}", i[0])
+
+ def __init__(self, mainWindow: object) -> None:
+ # Fenêtre
+ dial: object = QDialog(parent = mainWindow)
+ dial.setWindowTitle("Admin - Emplois")
+
+ # Widgets Ajout
+ labAjoutEn: object = QLabel("Nom en Anglais")
+ inpAjoutEn: object = QLineEdit()
+ labAjoutFr: object = QLabel("Nom en Français")
+ inpAjoutFr: object = QLineEdit()
+ btnAjout: object = QPushButton("Enregistrer")
+ btnAjout.clicked.connect(
+ lambda: [
+ coreAdmin.core_ajout_emploi(
+ mainWindow,
+ inpAjoutEn.text(),
+ inpAjoutFr.text()
+ ),
+ self.cmb_populate(mainWindow, cmbSuppr)
+ ]
+ )
+ # Layout Ajout
+ layAjout: object = QGridLayout()
+ layAjout.addWidget(labAjoutEn, 0, 0)
+ layAjout.addWidget(inpAjoutEn, 0, 1)
+ layAjout.addWidget(labAjoutFr, 1, 0)
+ layAjout.addWidget(inpAjoutFr, 1, 1)
+ layAjout.addWidget(btnAjout, 2, 1)
+ # Grp Ajout
+ grpAjout: object = QGroupBox("Ajout d'un emploi")
+ grpAjout.setLayout(layAjout)
+
+ # Widgets Suppr
+ labSuppr: object = QLabel("Emploi à supprimmer")
+ cmbSuppr: object = QComboBox()
+ self.cmb_populate(mainWindow, cmbSuppr)
+ btnSuppr: object = QPushButton("Supprimer")
+ btnSuppr.clicked.connect(
+ lambda: [
+ coreAdmin.core_suppr_emploi(
+ mainWindow,
+ cmbSuppr.currentData()
+ ),
+ self.cmb_populate(mainWindow, cmbSuppr)
+ ]
+ )
+ # Layouts Suppr
+ laySuppr: object = QGridLayout()
+ laySuppr.addWidget(labSuppr, 0, 0)
+ laySuppr.addWidget(cmbSuppr, 0, 1)
+ laySuppr.addWidget(btnSuppr, 1, 1)
+ # Grp Suppr
+ grpSuppr: object = QGroupBox("Suppression d'un emploi")
+ grpSuppr.setLayout(laySuppr)
+
+ # Layout Main & show
+ layoutMain: object = QVBoxLayout()
+ layoutMain.addWidget(grpAjout)
+ layoutMain.addWidget(grpSuppr)
+ dial.setLayout(layoutMain)
+ dial.show()
+
+
+def admin_users(mainWindow: object) -> None:
+ # Instanciation DB
+ admin: object = dbadmin.DbAdmin(mainWindow)
+ allUsers: object = admin.get_all_users_account()
+
+ # Fenêtre
+ dial: object = QDialog(parent = mainWindow)
+ dial.setWindowTitle("Admin - Utilisateurs")
+
+ # Widgets Users
+ labUserId: object = QLabel("Id à supprimer")
+ inpUserId: object = QLineEdit()
+ btnSuppr: object = QPushButton("Supprimer")
+ btnSuppr.clicked.connect(
+ lambda: [
+ coreAdmin.core_suppr_user(
+ mainWindow,
+ inpUserId.text()
+ ),
+ dial.close()
+ ]
+ )
+ labAllUsers: list = []
+ for i in allUsers:
+ labAllUsers.append(QLabel(f"ID:{i[0]} Mail:{i[1]} Inscr.{i[4]} Status:{i[5]}"))
+ # Layouts Users
+ layUsersCmd: object = QHBoxLayout()
+ layUsersCmd.addStretch()
+ layUsersCmd.addWidget(labUserId)
+ layUsersCmd.addWidget(inpUserId)
+ layUsersCmd.addWidget(btnSuppr)
+ layUsersCmd.addStretch()
+ layUsers: object = QVBoxLayout()
+ for i in range(len(labAllUsers)):
+ layUsers.addWidget(labAllUsers[i])
+ layUserMain: object = QVBoxLayout()
+ layUserMain.addLayout(layUsersCmd)
+ layUserMain.addLayout(layUsers)
+ # Grp Users
+ grpUser: object = QGroupBox("Suppression d'un utilisateur")
+ grpUser.setLayout(layUserMain)
+
+ # Layout Main & Show
+ layoutMain: object = QVBoxLayout()
+ layoutMain.addWidget(grpUser)
+ dial.setLayout(layoutMain)
+ dial.show()
+
+
+def admin_missions(mainWindow: object):
+ # Instanciation DB
+ mission: object = dbmission.DbMission(mainWindow)
+ search: object = dbsearch.DbSearch(mainWindow)
+
+ # Fenêtre
+ dial: object = QDialog(parent = mainWindow)
+ dial.setWindowTitle("Admin - Missions")
+
+ # Widgets Users
+ labMissionId: object = QLabel("Id à supprimer")
+ inpMissionId: object = QLineEdit()
+ btnSuppr: object = QPushButton("Supprimer")
+ btnSuppr.clicked.connect(
+ lambda: [
+ coreAdmin.core_suppr_mission(
+ mainWindow,
+ inpMissionId.text()
+ ),
+ dial.close()
+ ]
+ )
+ allMissions: object = mission.get_all_missions()
+ labAllMissions: list = []
+ for i in allMissions:
+ emploi = search.get_job_by_jobid(i[10])[0][2]
+ labAllMissions.append(QLabel(f"ID:{i[0]} date:{i[1].strftime('%m/%d/%Y')} Emploi:{emploi} sujet:{i[2]} clientId:{i[8]} proId:{i[9]} "))
+ # Layouts Missions
+ layMissionsCmd: object = QHBoxLayout()
+ layMissionsCmd.addStretch()
+ layMissionsCmd.addWidget(labMissionId)
+ layMissionsCmd.addWidget(inpMissionId)
+ layMissionsCmd.addWidget(btnSuppr)
+ layMissionsCmd.addStretch()
+ layMissions: object = QVBoxLayout()
+ for i in range(len(labAllMissions)):
+ layMissions.addWidget(labAllMissions[i])
+ layMissionMain: object = QVBoxLayout()
+ layMissionMain.addLayout(layMissionsCmd)
+ layMissionMain.addLayout(layMissions)
+ # Grp Missions
+ grpMission: object = QGroupBox("Suppression d'une mission")
+ grpMission.setLayout(layMissionMain)
+
+ # Layout Main & Show
+ layoutMain: object = QVBoxLayout()
+ layoutMain.addWidget(grpMission)
+ dial.setLayout(layoutMain)
+ dial.show()
diff --git a/src/main.py b/src/main.py
index f9b9532..bc4950e 100644
--- a/src/main.py
+++ b/src/main.py
@@ -2,7 +2,7 @@
from sys import argv
from PyQt5.QtWidgets import QMainWindow, QApplication
from src.gui import pageHome
-from src.gui.include import menu
+from src.gui import globalMenu
"""
@@ -21,7 +21,7 @@ class mainWindow(QMainWindow):
userStatus: str = ""
def __init__(self) -> None:
super().__init__() # Déclenche l'"__init__" de QMainWindow
- menu.init(self)
+ globalMenu.init(self)
pageHome.main(self)