diff options
Diffstat (limited to 'src/app/windowRecherche.py')
| -rw-r--r-- | src/app/windowRecherche.py | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/app/windowRecherche.py b/src/app/windowRecherche.py new file mode 100644 index 0000000..b2305e1 --- /dev/null +++ b/src/app/windowRecherche.py @@ -0,0 +1,150 @@ + +# 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 + +from PyQt5.QtWidgets import ( + QDialog, QVBoxLayout, + QHBoxLayout, QLabel, + QPushButton, QGroupBox, + QComboBox, QLineEdit, + QMessageBox +) +from src.database.dbsearch import DbSearch +from src.database.dbmission import DbMission + + +def core_mandater(mainWindow: object, dial: object, proId: int) -> None: + """""" + dbmission: object = DbMission(mainWindow) + dbsearch: object = DbSearch(mainWindow) + proJobs: list = dbsearch.get_pro_job_by_proid(proId) + + dial: object = QDialog(dial) + + 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( + lambda: [ + dbmission.register_mission( + inpMandate.text(), + mainWindow.userId, + proId, + cmbMandate.currentData() + ), + QMessageBox.information( + dial, + "Mandater une mission", + "Votre mission à bien été mandatée" + ), + dial.close() + ] + ) + layBtnMandate: object = QHBoxLayout() + layBtnMandate.addStretch() + layBtnMandate.addWidget(btnMandate) + layBtnMandate.addStretch() + + layGrp: object = QVBoxLayout() + layGrp.addLayout(layInpMandate) + layGrp.addLayout(layCmbMandate) + layGrp.addLayout(layBtnMandate) + + grpMandate: object = QGroupBox() + grpMandate.setLayout(layGrp) + + layMain: object = QVBoxLayout() + layMain.addWidget(grpMandate) + + dial.setLayout(layMain) + dial.show() + + +def core_more_infos(mainWindow: object, dial: object, proId: int) -> None: + """""" + dial: object = QDialog(dial) + search: object = DbSearch(mainWindow) + resRecherche: list = search.get_user_info_by_userid(proId)[0][1:] + labelsText: list = [ + "Nom", + "Prénom", + "Diplôme", + "Capacités", + "Description", + "Téléphone", + "Adresse", + "Code postale", + "Ville", + ] + + layProInfo = QVBoxLayout() + for i in range(len(resRecherche)): + line: object = QHBoxLayout() + line.addWidget(QLabel(f"{labelsText[i]}: {resRecherche[i]}")) + layProInfo.addLayout(line) + + if mainWindow.userStatus == "Client": + layBtnMandate: object = QHBoxLayout() + btnMandate: object = QPushButton("Mandater") + btnMandate.clicked.connect( + lambda: + core_mandater(mainWindow, dial, proId) + ) + layBtnMandate.addStretch() + layBtnMandate.addWidget(btnMandate) + layBtnMandate.addStretch() + layProInfo.addLayout(layBtnMandate) + + grpProInfo: object = QGroupBox() + grpProInfo.setLayout(layProInfo) + + layMain: object = QVBoxLayout() + layMain.addWidget(grpProInfo) + + dial.setLayout(layMain) + dial.show() + + +def window_main(mainWindow: object, results: list) -> None: + """""" + dial: object = 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"]: + core_more_infos(mainWindow, dial, proId) + ) + layoutLine.addStretch() + layoutLine.addWidget(btnInfos) + layoutsResult.append(layoutLine) + + layoutMain = QVBoxLayout() + for layout in layoutsResult: + layoutMain.addLayout(layout) + + dial.setLayout(layoutMain) + dial.show() |
