diff options
Diffstat (limited to 'src/app/windowRecherche.py')
| -rw-r--r-- | src/app/windowRecherche.py | 106 |
1 files changed, 68 insertions, 38 deletions
diff --git a/src/app/windowRecherche.py b/src/app/windowRecherche.py index b2305e1..941e770 100644 --- a/src/app/windowRecherche.py +++ b/src/app/windowRecherche.py @@ -1,7 +1,15 @@ +############################################################################ +# # +# Description: Fenêtre de resultat d'une recherche et fenêtre permettant # +# de mandater un professionnel # +# # +############################################################################ + # 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 +# Import de PyQt5 from PyQt5.QtWidgets import ( QDialog, QVBoxLayout, QHBoxLayout, QLabel, @@ -9,33 +17,29 @@ from PyQt5.QtWidgets import ( QComboBox, QLineEdit, QMessageBox ) +# Import des éléments locaux from src.database.dbsearch import DbSearch from src.database.dbmission import DbMission def core_mandater(mainWindow: object, dial: object, proId: int) -> None: - """""" + """ + Fenêtre permettant de mandater un professionnel + """ + # Instaciation des méthodes pour rechercher et gérer les missions dans la BDD dbmission: object = DbMission(mainWindow) dbsearch: object = DbSearch(mainWindow) + # Récupération des emplois du Pro avec son ID proJobs: list = dbsearch.get_pro_job_by_proid(proId) - + # Instanciation d'une fenêtre simple dial: object = QDialog(dial) - + # Widgets pour pouvoir mandater le pro labInpMandate: object = QLabel("Sujet de la mission:") inpMandate: object = QLineEdit(maxLength=128) - layInpMandate: object = QHBoxLayout() - layInpMandate.addWidget(labInpMandate) - layInpMandate.addStretch() - layInpMandate.addWidget(inpMandate) - labCmbMandate: object = QLabel("Profession concernée:") cmbMandate: object = QComboBox() - layCmbMandate: object = QHBoxLayout() for i in proJobs: cmbMandate.addItem(f"{i[2]}", i[0]) - layCmbMandate.addWidget(labCmbMandate) - layCmbMandate.addStretch() - layCmbMandate.addWidget(cmbMandate) btnMandate = QPushButton("Mandater") btnMandate.clicked.connect( @@ -54,31 +58,46 @@ def core_mandater(mainWindow: object, dial: object, proId: int) -> None: dial.close() ] ) + # Layout pour les lignes + layInpMandate: object = QHBoxLayout() + layInpMandate.addWidget(labInpMandate) + layInpMandate.addStretch() + layInpMandate.addWidget(inpMandate) + layCmbMandate: object = QHBoxLayout() + layCmbMandate.addWidget(labCmbMandate) + layCmbMandate.addStretch() + layCmbMandate.addWidget(cmbMandate) layBtnMandate: object = QHBoxLayout() layBtnMandate.addStretch() layBtnMandate.addWidget(btnMandate) layBtnMandate.addStretch() - + # Layout du formulaire pour mandater layGrp: object = QVBoxLayout() layGrp.addLayout(layInpMandate) layGrp.addLayout(layCmbMandate) layGrp.addLayout(layBtnMandate) - + # GroupBox du formulaire grpMandate: object = QGroupBox() grpMandate.setLayout(layGrp) - + # Layout principal auquel on donne le GroupBox layMain: object = QVBoxLayout() layMain.addWidget(grpMandate) - dial.setLayout(layMain) + # Affichage de la fenêtre dial.show() def core_more_infos(mainWindow: object, dial: object, proId: int) -> None: - """""" + """ + Fenêtre permettant de voir toutes les infos d'un professionnel + """ + # Instanciation d'une fenètre simple dial: object = QDialog(dial) + # Instanciation des méthode de recherche dans la BDD search: object = DbSearch(mainWindow) + # Récupération des infos de l'utilisateur en se passant de son id (champ 1) resRecherche: list = search.get_user_info_by_userid(proId)[0][1:] + # Liste comprenant le text des labels labelsText: list = [ "Nom", "Prénom", @@ -90,13 +109,15 @@ def core_more_infos(mainWindow: object, dial: object, proId: int) -> None: "Code postale", "Ville", ] - + # Pour chaque élément dans la liste des textes de label on crée + # une ligne avec le resultat de la recherche qui lui est lié layProInfo = QVBoxLayout() for i in range(len(resRecherche)): line: object = QHBoxLayout() line.addWidget(QLabel(f"{labelsText[i]}: {resRecherche[i]}")) layProInfo.addLayout(line) + # Si on est connecté en tant que client on rajoute le bouton pour mandater if mainWindow.userStatus == "Client": layBtnMandate: object = QHBoxLayout() btnMandate: object = QPushButton("Mandater") @@ -109,42 +130,51 @@ def core_more_infos(mainWindow: object, dial: object, proId: int) -> None: layBtnMandate.addStretch() layProInfo.addLayout(layBtnMandate) + # Enfin le GroupBox qui va recevoir l'ensemble grpProInfo: object = QGroupBox() grpProInfo.setLayout(layProInfo) - - layMain: object = QVBoxLayout() + # Le layout principal + layMain: object = QVBoxLayout() layMain.addWidget(grpProInfo) - dial.setLayout(layMain) + # On affiche la fenêtre dial.show() def window_main(mainWindow: object, results: list) -> None: - """""" + """ + Fenêtre affichant le résultat d'une recherche + """ + # Instanciation d'une fenêtre simple dial: object = QDialog(parent=mainWindow) - dial.setWindowTitle("Recherche") - layoutsResult: list = [] + # On défini le titre de cette fenêtre + dial.setWindowTitle("Résulta de la Recherche") + # On crée une liste qui va recevoir les lignes qui possède + # les widgets définis avec le payload des résultats + linesResult: 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") + layoutLine.addWidget(QLabel(i["text"])) + btnInfos: object = QPushButton("Infos") btnInfos.clicked.connect( lambda checked, proId=i["id"]: core_more_infos(mainWindow, dial, proId) ) layoutLine.addStretch() layoutLine.addWidget(btnInfos) - layoutsResult.append(layoutLine) - - layoutMain = QVBoxLayout() - for layout in layoutsResult: - layoutMain.addLayout(layout) - + linesResult.append(layoutLine) + + # Layout qui va recvoir les lignes + layRecherche: object = QVBoxLayout() + for i in linesResult: + layRecherche.addLayout(i) + + # GroupBox de la recherche + grpRecherche: object = QGroupBox("Recherche") + grpRecherche.setLayout(layRecherche) + # Layout principal a qui on donne le GroupBox + layoutMain: object = QVBoxLayout() + layoutMain.addWidget(grpRecherche) dial.setLayout(layoutMain) + # On afficha la fenêtre dial.show() |
