diff options
Diffstat (limited to 'src/gui')
| -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 |
9 files changed, 253 insertions, 43 deletions
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() |
