summaryrefslogtreecommitdiff
path: root/src/app/mainHome.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/mainHome.py')
-rw-r--r--src/app/mainHome.py77
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)