diff options
Diffstat (limited to 'src/gui')
| -rw-r--r-- | src/gui/__init__.py | 0 | ||||
| -rw-r--r-- | src/gui/globalMenu.py | 48 | ||||
| -rw-r--r-- | src/gui/pageHome.py | 101 | ||||
| -rw-r--r-- | src/gui/pageLogin.py | 68 | ||||
| -rw-r--r-- | src/gui/pageRegister.py | 84 | ||||
| -rw-r--r-- | src/gui/ressources/icon.ico | bin | 41662 -> 0 bytes | |||
| -rw-r--r-- | src/gui/windowAPropos.py | 14 | ||||
| -rw-r--r-- | src/gui/windowAdmin.py | 180 | ||||
| -rw-r--r-- | src/gui/windowMissions.py | 153 | ||||
| -rw-r--r-- | src/gui/windowRecherche.py | 62 | ||||
| -rw-r--r-- | src/gui/windowUserInfo.py | 195 |
11 files changed, 0 insertions, 905 deletions
diff --git a/src/gui/__init__.py b/src/gui/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/src/gui/__init__.py +++ /dev/null diff --git a/src/gui/globalMenu.py b/src/gui/globalMenu.py deleted file mode 100644 index 4625a54..0000000 --- a/src/gui/globalMenu.py +++ /dev/null @@ -1,48 +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, windowAdmin, windowUserInfo, windowMissions - -def init(mainWindow): - logo: str = join(Path(__file__).parent, "ressources", "icon.ico") - mainWindow.setWindowIcon(QIcon(logo)) - mainWindow.setWindowTitle("Alphajob") - menu: object = mainWindow.menuBar() - menu.clear() # Clear au cas où - if mainWindow.userConnected and mainWindow.userStatus == "Admin": - menuAdmin: object = menu.addMenu("Admin") - btnEmplois: object = QAction("Gestion des emplois", mainWindow) - btnUsers: object = QAction("Gestion des Utilisateurs", mainWindow) - btnMissions: object = QAction("Gestion des missions", mainWindow) - btnEmplois.triggered.connect(lambda: windowAdmin.admin_emplois(mainWindow)) - btnUsers.triggered.connect(lambda: windowAdmin.admin_users(mainWindow)) - btnMissions.triggered.connect(lambda: windowAdmin.admin_missions(mainWindow)) - menuAdmin.addAction(btnEmplois) - menuAdmin.addAction(btnUsers) - menuAdmin.addAction(btnMissions) - elif mainWindow.userConnected and ( - mainWindow.userStatus == "Pro" or mainWindow.userStatus == "Client"): - # Infos - menuUserInfos: object = menu.addMenu("Mes infos") - btnMesInfos: object = QAction("Gérer ses infos", mainWindow) - btnMesInfos.triggered.connect(lambda: windowUserInfo.modif_infos(mainWindow)) - menuUserInfos.addAction(btnMesInfos) - # Missions - menuMissions: object = menu.addMenu("Mes missions") - btnPendingMission: object = QAction("Missions en attente", mainWindow) - btnOngoignMission: object = QAction("Missions en cours", mainWindow) - btnCompletedMission: object = QAction("Missions en terminées", mainWindow) - btnPendingMission.triggered.connect(lambda: windowMissions.main(mainWindow, "pending")) - btnOngoignMission.triggered.connect(lambda: windowMissions.main(mainWindow, "ongoing")) - btnCompletedMission.triggered.connect(lambda: windowMissions.main(mainWindow, "completed")) - menuMissions.addAction(btnPendingMission) - menuMissions.addAction(btnOngoignMission) - menuMissions.addAction(btnCompletedMission) - - - menuOptions: object = menu.addMenu("Options") - btnApropos: object = QAction("A propos", mainWindow) - btnApropos.triggered.connect(lambda: windowAPropos.main(mainWindow)) - menuOptions.addAction(btnApropos) diff --git a/src/gui/pageHome.py b/src/gui/pageHome.py deleted file mode 100644 index 03f8d81..0000000 --- a/src/gui/pageHome.py +++ /dev/null @@ -1,101 +0,0 @@ - -from PyQt5.QtWidgets import ( - QGroupBox, QPushButton, - QComboBox, QLineEdit, - QHBoxLayout, QWidget, - QVBoxLayout, QLabel -) -from src.database import dbsearch -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, reloadMenu = False) -> None: - if reloadMenu: - globalMenu.init(mainWindow) - - classSearch = dbsearch.DbSearch(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)) - - btnInscription = QPushButton("Inscription") - btnInscription.clicked.connect(lambda: pageRegister.main(mainWindow)) - - layoutUser = QHBoxLayout() - layoutUser.addStretch() - layoutUser.addWidget(btnInscription) - if not mainWindow.userConnected: - layoutUser.addWidget(btnConnexion) - else: - layoutUser.addWidget(btnDeconnexion) - - grpUtilisateur = QGroupBox("Gestion de l'utilisateur") - grpUtilisateur.setLayout(layoutUser) - - labRechercheNom = QLabel("Par nom") - inputRechercheNom = QLineEdit() - btnRechercheNom = QPushButton("Rechercher") - btnRechercheNom.clicked.connect( - lambda: - core_search_name( - mainWindow, - inputRechercheNom.text() - ) - ) - labRechercheCat = QLabel("Par emploi") - comboRechercheCat = QComboBox() - alljobs = classSearch.get_job_all() - for i in alljobs: - comboRechercheCat.addItem("{0}".format(i[2]), i[0]) - btnRechercheCat = QPushButton("Rechercher") - btnRechercheCat.clicked.connect( - lambda: - core_search_id( - mainWindow, - comboRechercheCat.currentData() - ) - ) - - layoutRechercheNom = QVBoxLayout() - layoutRechercheNom.addWidget(labRechercheNom) - layoutRechercheNom.addWidget(inputRechercheNom) - layoutRechercheNom.addWidget(btnRechercheNom) - layoutRechercheCat = QVBoxLayout() - layoutRechercheCat.addWidget(labRechercheCat) - layoutRechercheCat.addWidget(comboRechercheCat) - layoutRechercheCat.addWidget(btnRechercheCat) - - layoutRecherche = QHBoxLayout() - layoutRecherche.addStretch() - layoutRecherche.addLayout(layoutRechercheNom) - layoutRecherche.addStretch() - layoutRecherche.addLayout(layoutRechercheCat) - layoutRecherche.addStretch() - - grpRecherche = QGroupBox("Recherche") - grpRecherche.setLayout(layoutRecherche) - - layoutMain = QVBoxLayout() - layoutMain.addWidget(connexionState) - layoutMain.addWidget(grpUtilisateur) - layoutMain.addStretch() - layoutMain.addWidget(grpRecherche) - layoutMain.addStretch() - - if hasattr(mainWindow, "mainWidget"): - mainWindow.mainWidget.deleteLater() - - mainWindow.mainWidget = QWidget() - mainWindow.mainWidget.setLayout(layoutMain) - mainWindow.setCentralWidget(mainWindow.mainWidget) diff --git a/src/gui/pageLogin.py b/src/gui/pageLogin.py deleted file mode 100644 index e255dfb..0000000 --- a/src/gui/pageLogin.py +++ /dev/null @@ -1,68 +0,0 @@ - -from PyQt5.QtWidgets import ( - QPushButton, QHBoxLayout, QGroupBox, QLabel, - QLineEdit, QWidget, QVBoxLayout, QGridLayout -) -from src.gui import pageHome, pageRegister -from src.core.coreUser import core_login - - -def main(mainWindow) -> None: - 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() - layoutUser.addWidget(btnInscription) - grpUtilisateur = QGroupBox("Gestion de l'utilisateur") - grpUtilisateur.setLayout(layoutUser) - - labMail = QLabel("Email") - leditMail = QLineEdit() - labPassword = QLabel("Mot de passe") - leditPassword = QLineEdit() - leditPassword.setEchoMode(QLineEdit.Password) - btnConnexion = QPushButton("Connexion") - btnConnexion.clicked.connect( - lambda: - core_login( - mainWindow, - leditMail.text(), - leditPassword.text() - ) - ) - - LayoutInfoConnexion = QGridLayout() - LayoutInfoConnexion.addWidget(labMail, 0, 0) - LayoutInfoConnexion.addWidget(leditMail, 0, 1) - LayoutInfoConnexion.addWidget(labPassword, 1, 0) - LayoutInfoConnexion.addWidget(leditPassword, 1, 1) - LayoutInfoConnexion.addWidget(btnConnexion, 2, 1) - - layoutGroupConnexion = QHBoxLayout() - layoutGroupConnexion.addStretch() - layoutGroupConnexion.addLayout(LayoutInfoConnexion) - layoutGroupConnexion.addStretch() - - grpConnexion = QGroupBox("Connexion") - grpConnexion.setLayout(layoutGroupConnexion) - - layoutMain = QVBoxLayout() - layoutMain.addWidget(connexionState) - layoutMain.addWidget(grpUtilisateur) - layoutMain.addStretch() - layoutMain.addWidget(grpConnexion) - layoutMain.addStretch() - - mainWindow.mainWidget.deleteLater() - mainWindow.mainWidget = QWidget() - mainWindow.mainWidget.setLayout(layoutMain) - mainWindow.setCentralWidget(mainWindow.mainWidget)
\ No newline at end of file diff --git a/src/gui/pageRegister.py b/src/gui/pageRegister.py deleted file mode 100644 index f0fc392..0000000 --- a/src/gui/pageRegister.py +++ /dev/null @@ -1,84 +0,0 @@ - -from PyQt5.QtWidgets import ( - QPushButton, QHBoxLayout, QGroupBox, QLabel, - QLineEdit, QWidget, QVBoxLayout, QComboBox, QGridLayout -) -from src.gui import pageHome, pageLogin -from src.core.coreUser import core_register, core_logout - - -def main(mainWindow) -> None: - 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)) - - 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() - if not mainWindow.userConnected: - layoutUser.addWidget(btnConnexion) - else: - layoutUser.addWidget(btnDeconnexion) - - grpUtilisateur = QGroupBox("Gestion de l'utilisateur") - grpUtilisateur.setLayout(layoutUser) - - labMail = QLabel("Email") - leditMail = QLineEdit() - labPassword = QLabel("Mot de passe") - leditPassword = QLineEdit() - leditPassword.setEchoMode(QLineEdit.Password) - labStatus = QLabel("Rôle") - comboStatus = QComboBox() - comboStatus.addItem("Admin", 0) - comboStatus.addItem("Pro", 1) - comboStatus.addItem("Client", 2) - - btnRegister = QPushButton("S'inscrire") - btnRegister.clicked.connect( - lambda: core_register( - mainWindow, - leditMail.text(), - leditPassword.text(), - comboStatus.currentData() - ) - ) - - LayoutInfoConnexion = QGridLayout() - LayoutInfoConnexion.addWidget(labMail, 0, 0) - LayoutInfoConnexion.addWidget(leditMail, 0, 1) - LayoutInfoConnexion.addWidget(labPassword, 1, 0) - LayoutInfoConnexion.addWidget(leditPassword, 1, 1) - LayoutInfoConnexion.addWidget(labStatus, 2, 0) - LayoutInfoConnexion.addWidget(comboStatus, 2, 1) - LayoutInfoConnexion.addWidget(btnRegister, 3, 1) - - layoutGroupConnexion = QHBoxLayout() - layoutGroupConnexion.addStretch() - layoutGroupConnexion.addLayout(LayoutInfoConnexion) - layoutGroupConnexion.addStretch() - grpConnexion = QGroupBox("Inscription") - grpConnexion.setLayout(layoutGroupConnexion) - - layoutMain = QVBoxLayout() - layoutMain.addWidget(connexionState) - layoutMain.addWidget(grpUtilisateur) - layoutMain.addStretch() - layoutMain.addWidget(grpConnexion) - layoutMain.addStretch() - - mainWindow.mainWidget.deleteLater() - mainWindow.mainWidget = QWidget() - mainWindow.mainWidget.setLayout(layoutMain) - mainWindow.setCentralWidget(mainWindow.mainWidget) diff --git a/src/gui/ressources/icon.ico b/src/gui/ressources/icon.ico Binary files differdeleted file mode 100644 index 7c550a3..0000000 --- a/src/gui/ressources/icon.ico +++ /dev/null diff --git a/src/gui/windowAPropos.py b/src/gui/windowAPropos.py deleted file mode 100644 index 9ecdfda..0000000 --- a/src/gui/windowAPropos.py +++ /dev/null @@ -1,14 +0,0 @@ - -from PyQt5.QtWidgets import QMessageBox - - -def main(mainWindow): - QMessageBox.information( - mainWindow, - "A propos", - "Logiciel pour mon dossier professionnel.\ - <br>Version: %s\ - <br>Auteur: Debulois Quentin\ - <br>Code source: \ - <a href='https://git.debulois.fr/'>git.debulois.fr/</a>" % mainWindow.VERSION - ) diff --git a/src/gui/windowAdmin.py b/src/gui/windowAdmin.py deleted file mode 100644 index 3996615..0000000 --- a/src/gui/windowAdmin.py +++ /dev/null @@ -1,180 +0,0 @@ - -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/gui/windowMissions.py b/src/gui/windowMissions.py deleted file mode 100644 index d6fe57b..0000000 --- a/src/gui/windowMissions.py +++ /dev/null @@ -1,153 +0,0 @@ - -from PyQt5.QtWidgets import ( - QDialog, QGroupBox, QLabel, - QVBoxLayout, QHBoxLayout, - QPushButton, QMessageBox, - QLineEdit, QComboBox -) -from src.database.dbmission import DbMission - - -def review_mission(dial: object, dbmission: object, missionId: int) -> None: - dialReview = QDialog(parent=dial) - - lineNote = QHBoxLayout() - labNote = QLabel("Note: ") - cmbNote = QComboBox() - for i in range(6): - cmbNote.addItem(str(i), i) - lineNote.addWidget(labNote) - lineNote.addStretch() - lineNote.addWidget(cmbNote) - - lineReview = QHBoxLayout() - labReview = QLabel("Avis: ") - inpReview = QLineEdit() - lineReview.addWidget(labReview) - lineReview.addStretch() - lineReview.addWidget(inpReview) - - lineBtn = QHBoxLayout() - btnValider = QPushButton("Valider") - btnValider.clicked.connect( - lambda: - [dbmission.review_mission(missionId, inpReview.text(), cmbNote.currentData()), - dbmission.validate_mission_client_by_missionid(missionId), - QMessageBox.information( - dial, - "Mission", - "La mission a été validée" - ), - dialReview.close()] - ) - lineBtn.addStretch() - lineBtn.addWidget(btnValider) - lineBtn.addStretch() - - - layReview = QVBoxLayout() - layReview.addLayout(lineNote) - layReview.addLayout(lineReview) - layReview.addLayout(lineBtn) - - grpMain = QGroupBox("Donnez votre avis") - grpMain.setLayout(layReview) - layMain = QVBoxLayout() - layMain.addWidget(grpMain) - - dialReview.setLayout(layMain) - dialReview.show() - - -def validate_mission(mainWindow: object, dial: object, missionId: int, status: str) -> None: - dbmission: object = DbMission(mainWindow) - if status == "acceptedByPro": - dbmission.accept_mission_by_missionid(missionId) - QMessageBox.information( - dial, - "Mission", - "La mission a bien été acceptée" - ) - elif status == "validatedByPro": - dbmission.validate_mission_pro_by_missionid(missionId) - QMessageBox.information( - dial, - "Mission", - "La mission a été validée" - ) - elif status == "validatedByClient": - review_mission(dial, dbmission, missionId) - - dial.close() - - -def get_missions_status(mainWindow: object, status: str) -> list: - dbmission: object = DbMission(mainWindow) - if mainWindow.userStatus == "Pro": - missionsAll: list = dbmission.get_mission_by_proid(mainWindow.userId) - elif mainWindow.userStatus == "Client": - missionsAll: list = dbmission.get_mission_by_clientid(mainWindow.userId) - - if status == "pending": - missionsPending = [list(i) for i in missionsAll if i[5] == None] - return missionsPending - elif status == "ongoing": - missionsOngoing = [list(i) for i in missionsAll if i[5] != None and (i[6] == None or i[7] == None)] - return missionsOngoing - elif status == "completed": - missionsCompleted = [list(i) for i in missionsAll if (i[6] != None and i[7] != None)] - return missionsCompleted - - -def main(mainWindow: object, status: str) -> None: - missions: list = get_missions_status(mainWindow, status) - dial: object = QDialog(parent = mainWindow) - - linesMission: list = [] - for mission in missions: - line = QHBoxLayout() - labMission = QLabel(" - ".join([str(i) for i in mission[1:] if i != None])) - line.addWidget(labMission) - if status == "pending" and mainWindow.userStatus == "Pro": - btnValidate = QPushButton("Valider") - btnValidate.clicked.connect( - lambda checked, missionId=mission[0]: - validate_mission(mainWindow, dial, missionId, "acceptedByPro") - ) - line.addStretch() - line.addWidget(btnValidate) - elif status == "ongoing" and mainWindow.userStatus == "Pro" and mission[7] == None: - btnValidate = QPushButton("Valider") - btnValidate.clicked.connect( - lambda checked, missionId=mission[0]: - validate_mission(mainWindow, dial, missionId, "validatedByPro") - ) - line.addStretch() - line.addWidget(btnValidate) - elif status == "ongoing" and mainWindow.userStatus == "Client" and mission[6] == None: - btnValidate = QPushButton("Valider") - btnValidate.clicked.connect( - lambda checked, missionId=mission[0]: - validate_mission(mainWindow, dial, missionId, "validatedByClient") - ) - line.addStretch() - line.addWidget(btnValidate) - - linesMission.append(line) - - layMission = QVBoxLayout() - for i in linesMission: - layMission.addLayout(i) - - if status == "pending": - grpMain = QGroupBox("Missions en attente") - elif status == "ongoing": - grpMain = QGroupBox("Missions en cours") - elif status == "completed": - grpMain = QGroupBox("Missions terminées") - - grpMain.setLayout(layMission) - layMain = QVBoxLayout() - layMain.addWidget(grpMain) - dial.setLayout(layMain) - dial.show() diff --git a/src/gui/windowRecherche.py b/src/gui/windowRecherche.py deleted file mode 100644 index dd71f08..0000000 --- a/src/gui/windowRecherche.py +++ /dev/null @@ -1,62 +0,0 @@ - -from PyQt5.QtWidgets import ( - QDialog, QVBoxLayout, QHBoxLayout, - QLabel, QPushButton, QMessageBox -) -from src.database import dbsearch -# https://docs.python.org/3/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result -# https://stackoverflow.com/questions/53751106/create-lambda-functions-in-a-loop-for-pyqt5-signals?noredirect=1 - - -def more_infos(mainWindow, proId): - search: object = dbsearch.DbSearch(mainWindow) - resRecherche: list = search.get_user_info_by_userid(proId)[0][1:] - label: list = [ - "Nom", - "Prénom", - "Diplôme", - "Capacités", - "Description", - "Téléphone", - "Adresse", - "Code postale", - "Ville", - ] - text: list = [] - for i in range(len(resRecherche)): - text.append(f"{label[i]}: {resRecherche[i]}") - - QMessageBox.information( - mainWindow, - "Informations du pro", - "\n".join(text) - ) - -def main(mainWindow: object, results: list) -> None: - dial = QDialog(parent = mainWindow) - dial.setWindowTitle("Recherche") - layoutsResult: list = [] - for i in results: - layoutLine = QHBoxLayout() - color = results.index(i) % 2 - if color: - colored = QLabel(i["text"]) - colored.setStyleSheet("background-color: rgb(230,200,200); border-radius: 3px") - layoutLine.addWidget(colored) - else: - layoutLine.addWidget(QLabel(i["text"])) - btnInfos = QPushButton("Infos") - btnInfos.clicked.connect( - lambda checked, proId = i['id']: - more_infos(mainWindow, proId) - ) - layoutLine.addStretch() - layoutLine.addWidget(btnInfos) - layoutsResult.append(layoutLine) - - layoutMain = QVBoxLayout() - for layout in layoutsResult: - layoutMain.addLayout(layout) - - dial.setLayout(layoutMain) - dial.show() diff --git a/src/gui/windowUserInfo.py b/src/gui/windowUserInfo.py deleted file mode 100644 index e0a9b08..0000000 --- a/src/gui/windowUserInfo.py +++ /dev/null @@ -1,195 +0,0 @@ - -from PyQt5.QtWidgets import ( - QDialog, QGroupBox, QLabel, - QLineEdit, QVBoxLayout, QHBoxLayout, - QPushButton, QComboBox, QMessageBox -) -from src.database.dbuser import DbUser -from src.database.dbsearch import DbSearch - - -def add_job(jobName: str, jobId: int, listMyJobs: list, layMyJobs: object) -> None: - if jobId not in listMyJobs: - listMyJobs.append(jobId) - lineMyJobs: object = QHBoxLayout() - labJob: object = QLabel(jobName) - btnRemoveJob: object = QPushButton("Supprimer") - btnRemoveJob.clicked.connect( - lambda checked, jId=jobId, layItem=lineMyJobs: [ - listMyJobs.remove(jId), - delete_job(layItem) - ] - ) - lineMyJobs.addWidget(labJob) - lineMyJobs.addStretch() - lineMyJobs.addWidget(btnRemoveJob) - layMyJobs.addLayout(lineMyJobs) - - -def delete_job(layLineJob: object) -> None: - lab: object = layLineJob.itemAt(0).widget() - btn: object = layLineJob.itemAt(2).widget() - lab.deleteLater() - btn.deleteLater() - layLineJob.deleteLater() - - -def validate(mainWindow: object, dial: object, layoutLines: list, oldJobs: list = None, newJobs: list = None) -> None: - user: object = DbUser(mainWindow = mainWindow) - userInfos: list = [] - for i in layoutLines: - if i != "selectJobs" and i != "myJobs": - lineInput: object = layoutLines[i].itemAt(2).widget() - userInfos.append(lineInput.text()) - - if mainWindow.userStatus == "Pro": - isPro: bool = True - else: - isPro: bool = False - - if "" in userInfos: - QMessageBox.warning( - dial, - "Mes informations", - "Veuillez renseigner tous les champs" - ) - return - - user.update_user_infos(userInfos, mainWindow.userId, isPro, oldJobs, newJobs) - QMessageBox.information( - dial, - "Mes informations", - "Modification enregistrée" - ) - - -# https://stackoverflow.com/questions/3077192/get-a-layouts-widgets-in-pyqt -def modif_infos(mainWindow: object) -> None: - dial: object = QDialog(parent = mainWindow) - dial.setWindowTitle("Mes infos") - - search: object = DbSearch(mainWindow) - infos: list = search.get_user_info_by_userid(mainWindow.userId) - - if infos: - champsClients: dict = { - "Nom": infos[0][1], - "Prénom": infos[0][2], - "Téléphone": infos[0][6], - "Addresse": infos[0][7], - "Code postal": infos[0][8], - "ville": infos[0][9] - } - champsPro: dict = { - "Diplôme": infos[0][3], - "Capacités": infos[0][4], - "Description": infos[0][5] - } - else: - champsClients: list = [ - "Nom", - "Prénom", - "Téléphone", - "Addresse", - "Code postal", - "ville" - ] - champsPro: list =[ - "Diplôme", - "Capacités", - "Description" - ] - - layoutLines: list = {} - for i in champsClients: - layoutLines[i] = QHBoxLayout() - layoutLines[i].addWidget(QLabel(i)) - layoutLines[i].addStretch() - if infos: - if i == "Téléphone": - layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=10)) - elif i == "Code postal": - layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=6)) - else: - layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=128)) - else: - if i == "Téléphone": - layoutLines[i].addWidget(QLineEdit(maxLength=10)) - elif i == "Code postal": - layoutLines[i].addWidget(QLineEdit(maxLength=6)) - else: - layoutLines[i].addWidget(QLineEdit(maxLength=128)) - - if mainWindow.userStatus == "Pro": - allJobs: object = search.get_job_all() - labSelectJobs: object = QLabel("Les emplois:") - cmbAllJobs: object = QComboBox() - lineSelectJobs: object = QHBoxLayout() - for i in allJobs: - cmbAllJobs.addItem(f"{i[2]}", i[0]) - btnSelectJobs = QPushButton("Ajouter") - btnSelectJobs.clicked.connect( - lambda : - add_job( - cmbAllJobs.currentText(), - cmbAllJobs.currentData(), - newJobs, - layMyJobs - ) - ) - lineSelectJobs.addWidget(labSelectJobs) - lineSelectJobs.addStretch() - lineSelectJobs.addWidget(cmbAllJobs) - lineSelectJobs.addStretch() - lineSelectJobs.addWidget(btnSelectJobs) - layoutLines["selectJobs"] = lineSelectJobs - - myJobs: object = search.get_pro_job_by_proid(mainWindow.userId) - layMyJobs: object = QVBoxLayout() - newJobs: list = [] - for i in myJobs: - add_job(i[2], i[0], newJobs, layMyJobs) - oldJobs: list = newJobs.copy() # Sinon pointer !!! - - layoutLines["myJobs"] = layMyJobs - - for i in champsPro: - layoutLines[i] = QHBoxLayout() - layoutLines[i].addWidget(QLabel(i)) - layoutLines[i].addStretch() - if infos: - layoutLines[i].addWidget(QLineEdit(champsPro[i], maxLength=256)) - else: - layoutLines[i].addWidget(QLineEdit(maxLength=256)) - - modifLayout: object = QVBoxLayout() - for i in layoutLines: - modifLayout.addLayout(layoutLines[i]) - - btnModif: object = QPushButton("modifer") - btnModif.clicked.connect( - lambda: - validate( - mainWindow, - dial, - layoutLines, - oldJobs, - newJobs - ) if mainWindow.userStatus == "Pro" - else validate( - mainWindow, - dial, - layoutLines - ) - ) - layoutBtn: object = QHBoxLayout() - layoutBtn.addStretch() - layoutBtn.addWidget(btnModif) - modifLayout.addLayout(layoutBtn) - - grpMain: object = QGroupBox("Mes infos") - grpMain.setLayout(modifLayout) - mainLayout: object = QVBoxLayout() - mainLayout.addWidget(grpMain) - dial.setLayout(mainLayout) - dial.show() |
