from PyQt5.QtWidgets import ( QGroupBox, QPushButton, QComboBox, QLineEdit, QHBoxLayout, QWidget, QVBoxLayout, QLabel, QMessageBox ) from src.app import ( mainLogin, mainRegister, mainMenuBar, windowRecherche, mainLogout ) from src.database.dbsearch import DbSearch def core_search_id(mainWindow: object, jobId: int) -> None: """""" dbsearch: object = DbSearch(mainWindow) resRecherche: list = dbsearch.get_all_pro_by_jobid(jobId) if resRecherche: core_search_main(mainWindow, resRecherche) else: QMessageBox.information( mainWindow, "Résultat", "Aucun résultat." ) def core_search_name(mainWindow: object, name: str) -> None: """""" dbsearch: object = DbSearch(mainWindow) resRecherche: tuple = dbsearch.get_pro_info_by_lastname(name) if resRecherche: core_search_main(mainWindow, resRecherche) else: QMessageBox.information( mainWindow, "Résultat", "Aucun résultat." ) def core_search_main(mainWindow: object, resRecherche: tuple) -> None: """""" dbsearch: object = DbSearch(mainWindow) results: list = [] for i in resRecherche: proInfo: dict = {} proInfo["id"] = i[0] resJobs = dbsearch.get_pro_job_by_proid(proInfo["id"]) proInfo["text"] = list(i[1:]) proInfo["text"].insert(2, ", ".join([j[2] for j in resJobs])) proInfo["text"] = " - ".join(proInfo["text"]) results.append(proInfo) windowRecherche.window_main(mainWindow, results) def window_main(mainWindow, reloadMenu = False) -> None: """""" if reloadMenu: mainMenuBar.menu_init(mainWindow) dbsearch: object = DbSearch(mainWindow) # if not mainWindow.userConnected: connState: object = QLabel("Non connecté.") else: connState: object = QLabel( f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}" ) if not mainWindow.userConnected: btnConnexion: object = QPushButton("Connexion") btnConnexion.clicked.connect(lambda: mainLogin.window_main(mainWindow)) else: btnDeconnexion: object = QPushButton("Déconnexion") btnDeconnexion.clicked.connect(lambda: [ mainLogout.core_logout(mainWindow), window_main(mainWindow, True) ] ) btnInscription: object = QPushButton("Inscription") btnInscription.clicked.connect(lambda: mainRegister.window_main(mainWindow)) # layUser: object = QHBoxLayout() layUser.addStretch() layUser.addWidget(btnInscription) if not mainWindow.userConnected: layUser.addWidget(btnConnexion) else: layUser.addWidget(btnDeconnexion) grpUser: object = QGroupBox("Gestion de l'utilisateur") grpUser.setLayout(layUser) # labRechercheNom: object = QLabel("Par nom") inputRechercheNom: object = QLineEdit(maxLength=128) btnRechercheNom: object = QPushButton("Rechercher") btnRechercheNom.clicked.connect( lambda: core_search_name( mainWindow, inputRechercheNom.text() ) ) labRechercheCat: object = QLabel("Par emploi") cmbRechercheCat: object = QComboBox() alljobs: list = dbsearch.get_job_all() for i in alljobs: cmbRechercheCat.addItem("{0}".format(i[2]), i[0]) btnRechercheCat: object = QPushButton("Rechercher") btnRechercheCat.clicked.connect( lambda: core_search_id( mainWindow, cmbRechercheCat.currentData() ) ) # layRechercheNom: object = QVBoxLayout() layRechercheNom.addWidget(labRechercheNom) layRechercheNom.addWidget(inputRechercheNom) layRechercheNom.addWidget(btnRechercheNom) layRechercheCat: object = QVBoxLayout() layRechercheCat.addWidget(labRechercheCat) layRechercheCat.addWidget(cmbRechercheCat) layRechercheCat.addWidget(btnRechercheCat) # layRecherche: object = QHBoxLayout() layRecherche.addStretch() layRecherche.addLayout(layRechercheNom) layRecherche.addStretch() layRecherche.addLayout(layRechercheCat) layRecherche.addStretch() # grpRecherche: object = QGroupBox("Recherche") grpRecherche.setLayout(layRecherche) # layMain: object = QVBoxLayout() layMain.addWidget(connState) layMain.addWidget(grpUser) layMain.addStretch() layMain.addWidget(grpRecherche) layMain.addStretch() # if hasattr(mainWindow, "mainWidget"): mainWindow.mainWidget.deleteLater() mainWindow.mainWidget = QWidget() mainWindow.mainWidget.setLayout(layMain) mainWindow.setCentralWidget(mainWindow.mainWidget)