diff options
Diffstat (limited to 'src/app/mainHome.py')
| -rw-r--r-- | src/app/mainHome.py | 77 |
1 files changed, 64 insertions, 13 deletions
diff --git a/src/app/mainHome.py b/src/app/mainHome.py index a366c66..39a9863 100644 --- a/src/app/mainHome.py +++ b/src/app/mainHome.py @@ -1,4 +1,12 @@ +############################################################################ +# # +# Description: Fenêtre principale avec l'accueil et les éléments pour # +# effectuer une recherche # +# # +############################################################################ + +# Import des éléments de PyQt5 from PyQt5.QtWidgets import ( QGroupBox, QPushButton, QComboBox, QLineEdit, @@ -6,8 +14,9 @@ from PyQt5.QtWidgets import ( QVBoxLayout, QLabel, QMessageBox ) +# Import des éléments locals from src.app import ( - mainLogin, mainRegister, + mainLogin, mainRegister, mainMenuBar, windowRecherche, mainLogout ) @@ -15,9 +24,16 @@ from src.database.dbsearch import DbSearch def core_search_id(mainWindow: object, jobId: int) -> None: - """""" + """ + Recherche les professionnels ayant tel emploi par l'id de ce dernier. + Renvoie le resultat de la recherche vers core_search_main + """ + # Instanciation dbsearch: object = DbSearch(mainWindow) + # Recherche resRecherche: list = dbsearch.get_all_pro_by_jobid(jobId) + # Si résultat on renvoie vers le "wrapper" de recherche, + # sinon QMessage if resRecherche: core_search_main(mainWindow, resRecherche) else: @@ -29,9 +45,16 @@ def core_search_id(mainWindow: object, jobId: int) -> None: def core_search_name(mainWindow: object, name: str) -> None: - """""" + """ + Recherche de professionnel par leur nom. + Renvoie le resultat de la recherche vers core_search_main. + """ + # Instanciation dbsearch: object = DbSearch(mainWindow) + # Recherche resRecherche: tuple = dbsearch.get_pro_info_by_lastname(name) + # Si résultat on renvoie vers le "wrapper" de recherche, + # sinon QMessage if resRecherche: core_search_main(mainWindow, resRecherche) else: @@ -43,15 +66,29 @@ def core_search_name(mainWindow: object, name: str) -> None: def core_search_main(mainWindow: object, resRecherche: tuple) -> None: - """""" + """ + Prépare la données reçue par les fonctions core_search_id et + core_search_name en ajoutant tous les emplois des professionels + présant dans le résultat de la recherche et envoie + l'ensemble à "winwdowRecherche" + """ + # Instaciation dbsearch: object = DbSearch(mainWindow) + # Préparation du "payload", une liste pour tous les résultats results: list = [] + # Pour chaque éléments dans les résultat de la recherche for i in resRecherche: + # On initialise un dictionnaire ("Associative array" en PHP) proInfo: dict = {} + # id -> proId proInfo["id"] = i[0] + # text -> sera le texte à afficher resJobs = dbsearch.get_pro_job_by_proid(proInfo["id"]) + # Tout depuis l'entrée '1' de la liste proInfo["text"] = list(i[1:]) + # Et à '2' on ajoute le nom fr(i[2]) de chaque jobId associés au pro liée par un ", " proInfo["text"].insert(2, ", ".join([j[2] for j in resJobs])) + # On transforme la liste en texte en liant les éléments avec un " - " proInfo["text"] = " - ".join(proInfo["text"]) results.append(proInfo) @@ -59,12 +96,17 @@ def core_search_main(mainWindow: object, resRecherche: tuple) -> None: def window_main(mainWindow, reloadMenu = False) -> None: - """""" + """ + Page principale de l'app d'où l'on peut effectuer des recherches + """ + # Si l'argument reloaMenu de la fonction est vrai on recharge la menuBar if reloadMenu: mainMenuBar.menu_init(mainWindow) + # Instanciation de la classe dbsearch: object = DbSearch(mainWindow) - # + # On check si la variable userConnected de la classe principale est vrai ou pas + # pour savoir si un utilisateur est connecté, on crée le widget QLabel en conséquence if not mainWindow.userConnected: connState: object = QLabel("Non connecté.") else: @@ -72,8 +114,12 @@ def window_main(mainWindow, reloadMenu = False) -> None: f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}" ) + # On adapte les widgets QPushButton en fonction if not mainWindow.userConnected: btnConnexion: object = QPushButton("Connexion") + # /!\ Association du bouton necessaire avec un lambda (fonction anonyme) + # sinon la fonction est executé à l'execution de la fonction et non quand + # on clique sur le bouton btnConnexion.clicked.connect(lambda: mainLogin.window_main(mainWindow)) else: btnDeconnexion: object = QPushButton("Déconnexion") @@ -85,7 +131,7 @@ def window_main(mainWindow, reloadMenu = False) -> None: btnInscription: object = QPushButton("Inscription") btnInscription.clicked.connect(lambda: mainRegister.window_main(mainWindow)) - # + # Partie layout des boutons de navigation layUser: object = QHBoxLayout() layUser.addStretch() layUser.addWidget(btnInscription) @@ -94,9 +140,10 @@ def window_main(mainWindow, reloadMenu = False) -> None: else: layUser.addWidget(btnDeconnexion) + # GroupeBox des boutons de navigation grpUser: object = QGroupBox("Gestion de l'utilisateur") grpUser.setLayout(layUser) - # + # Widgets pour une recherche par nom labRechercheNom: object = QLabel("Par nom") inputRechercheNom: object = QLineEdit(maxLength=128) btnRechercheNom: object = QPushButton("Rechercher") @@ -107,6 +154,7 @@ def window_main(mainWindow, reloadMenu = False) -> None: inputRechercheNom.text() ) ) + # Widgets pour une recherche par catégorie labRechercheCat: object = QLabel("Par emploi") cmbRechercheCat: object = QComboBox() alljobs: list = dbsearch.get_job_all() @@ -120,36 +168,39 @@ def window_main(mainWindow, reloadMenu = False) -> None: cmbRechercheCat.currentData() ) ) - # + # Layout recherche par nom layRechercheNom: object = QVBoxLayout() layRechercheNom.addWidget(labRechercheNom) layRechercheNom.addWidget(inputRechercheNom) layRechercheNom.addWidget(btnRechercheNom) + # Layout recherche par catégorie layRechercheCat: object = QVBoxLayout() layRechercheCat.addWidget(labRechercheCat) layRechercheCat.addWidget(cmbRechercheCat) layRechercheCat.addWidget(btnRechercheCat) - # + # Layout des deux types de recherche layRecherche: object = QHBoxLayout() layRecherche.addStretch() layRecherche.addLayout(layRechercheNom) layRecherche.addStretch() layRecherche.addLayout(layRechercheCat) layRecherche.addStretch() - # + # Groupe des deux recherches grpRecherche: object = QGroupBox("Recherche") grpRecherche.setLayout(layRecherche) - # + # Layout principale layMain: object = QVBoxLayout() layMain.addWidget(connState) layMain.addWidget(grpUser) layMain.addStretch() layMain.addWidget(grpRecherche) layMain.addStretch() - # + # Si la fenêtre avait deja un layout au travers du "mainWidget", + # on le supprime pour afficher les élements de cette fonction if hasattr(mainWindow, "mainWidget"): mainWindow.mainWidget.deleteLater() + # On crée le mainWidget et on défini sont layout mainWindow.mainWidget = QWidget() mainWindow.mainWidget.setLayout(layMain) mainWindow.setCentralWidget(mainWindow.mainWidget) |
