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