diff options
| author | Debulois <quentin@debulois.fr> | 2022-04-28 10:35:10 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-04-28 10:35:10 +0200 |
| commit | 503d62407ce57bebfec5e7134b603d50e58c48da (patch) | |
| tree | ae83ded2ac5719bbebd5f6ad5d76b6a8cb1ef592 | |
| parent | 5e23fcc7de84adf23ea52ae0858f31b8934fabd3 (diff) | |
Ajout de la gestion en tant qu'administrateur
| -rw-r--r-- | src/core/coreAdmin.py | 79 | ||||
| -rw-r--r-- | src/core/coreUser.py | 18 | ||||
| -rw-r--r-- | src/database/dbadmin.py | 64 | ||||
| -rw-r--r-- | src/database/dbmain.py | 2 | ||||
| -rw-r--r-- | src/gui/globalMenu.py | 28 | ||||
| -rw-r--r-- | src/gui/include/__init__.py | 0 | ||||
| -rw-r--r-- | src/gui/include/connexionInfo.py | 10 | ||||
| -rw-r--r-- | src/gui/include/menu.py | 16 | ||||
| -rw-r--r-- | src/gui/pageHome.py | 33 | ||||
| -rw-r--r-- | src/gui/pageLogin.py | 7 | ||||
| -rw-r--r-- | src/gui/pageRegister.py | 22 | ||||
| -rw-r--r-- | src/gui/ressources/icon.ico (renamed from src/gui/include/ressources/icon.ico) | bin | 41662 -> 41662 bytes | |||
| -rw-r--r-- | src/gui/windowAdmin.py | 180 | ||||
| -rw-r--r-- | src/main.py | 4 |
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 Binary files differindex 7c550a3..7c550a3 100644 --- a/src/gui/include/ressources/icon.ico +++ b/src/gui/ressources/icon.ico 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) |
