diff options
| author | Debulois <quentin@debulois.fr> | 2022-04-27 13:17:19 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-04-27 13:17:19 +0200 |
| commit | 5e23fcc7de84adf23ea52ae0858f31b8934fabd3 (patch) | |
| tree | 7d6217892195c994dc8f42687efd2c74d49bc275 | |
| parent | 6104a59cbdf6474acea6a8a1d4c865f3d88d2296 (diff) | |
Système de recherche
| -rw-r--r-- | src/core/coreSearch.py | 43 | ||||
| -rw-r--r-- | src/core/coreUser.py (renamed from src/core/funcUser.py) | 8 | ||||
| -rw-r--r-- | src/core/funcSearch.py | 3 | ||||
| -rw-r--r-- | src/gui/pageHome.py | 18 | ||||
| -rw-r--r-- | src/gui/pageLogin.py | 13 | ||||
| -rw-r--r-- | src/gui/pageRegister.py | 4 | ||||
| -rw-r--r-- | src/gui/windowRecherche.py | 63 | ||||
| -rw-r--r-- | src/main.py | 4 |
8 files changed, 133 insertions, 23 deletions
diff --git a/src/core/coreSearch.py b/src/core/coreSearch.py new file mode 100644 index 0000000..47f2f69 --- /dev/null +++ b/src/core/coreSearch.py @@ -0,0 +1,43 @@ + +from src.database import dbsearch +from src.gui import windowRecherche +from PyQt5.QtWidgets import QMessageBox + + +def core_search_id(mainWindow: object, jobId: int) -> None: + search: object = dbsearch.DbSearch(mainWindow) + resRecherche: tuple = search.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: + search: object = dbsearch.DbSearch(mainWindow) + resRecherche: tuple = search.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: + search: object = dbsearch.DbSearch(mainWindow) + results: list = [] + for i in resRecherche: + proInfo: dict = {} + proInfo["id"] = i[0] + resJobs = search.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.main(mainWindow, results) diff --git a/src/core/funcUser.py b/src/core/coreUser.py index 5b5ac2c..28476ad 100644 --- a/src/core/funcUser.py +++ b/src/core/coreUser.py @@ -5,7 +5,7 @@ from src.gui import pageHome from src.database import dbuser, dbsearch -def login(mainWindow, email, password) -> None: +def core_login(mainWindow, email, password) -> None: user = dbuser.DbUser(mainWindow) if user.check_exist_email(email): res = user.check_user_credential(email, password) @@ -41,7 +41,7 @@ def login(mainWindow, email, password) -> None: ) -def register(mainWindow, email, password, userStatus) -> None: +def core_register(mainWindow, email, password, userStatus) -> None: user = dbuser.DbUser(mainWindow) regNumb = "[0-9]" regUpper = "[A-Z]" @@ -65,7 +65,7 @@ def register(mainWindow, email, password, userStatus) -> None: ) return - if not userStatus: + if userStatus == None: QMessageBox.warning( mainWindow, "Mauvais rôle", @@ -113,11 +113,9 @@ def register(mainWindow, email, password, userStatus) -> None: "Inscription", "Inscription réussie!" ) - return else: QMessageBox.warning( mainWindow, "Erreur bdd", "Erreur lors de l'inscritpion" ) - return diff --git a/src/core/funcSearch.py b/src/core/funcSearch.py deleted file mode 100644 index 664a24b..0000000 --- a/src/core/funcSearch.py +++ /dev/null @@ -1,3 +0,0 @@ - -def search_by_job_id(mainWindow, jobId) -> None: - print(jobId) diff --git a/src/gui/pageHome.py b/src/gui/pageHome.py index 7745aa5..99ca956 100644 --- a/src/gui/pageHome.py +++ b/src/gui/pageHome.py @@ -5,10 +5,10 @@ from PyQt5.QtWidgets import ( QHBoxLayout, QWidget, QVBoxLayout ) -from src.core import funcSearch from src.database import dbsearch from src.gui import pageLogin, pageRegister from src.gui.include import connexionInfo +from src.core.coreSearch import core_search_id, core_search_name def main(mainWindow) -> None: @@ -30,16 +30,24 @@ def main(mainWindow) -> None: inputRechercheNom = QLineEdit("Nom d'un pro") btnRechercheNom = QPushButton("Rechercher") + btnRechercheNom.clicked.connect( + lambda: + core_search_name( + mainWindow, + inputRechercheNom.text() + ) + ) comboRechercheCat = QComboBox() alljobs = classSearch.get_job_all() for i in alljobs: comboRechercheCat.addItem("{0}".format(i[2]), i[0]) btnRechercheCat = QPushButton("Rechercher") btnRechercheCat.clicked.connect( - lambda: funcSearch.search_by_job_id( - mainWindow, - comboRechercheCat.currentData() - ) + lambda: + core_search_id( + mainWindow, + comboRechercheCat.currentData() + ) ) layoutRechercheNom = QVBoxLayout() diff --git a/src/gui/pageLogin.py b/src/gui/pageLogin.py index 46e328a..d2b7f93 100644 --- a/src/gui/pageLogin.py +++ b/src/gui/pageLogin.py @@ -3,9 +3,9 @@ from PyQt5.QtWidgets import ( QPushButton, QHBoxLayout, QGroupBox, QLabel, QLineEdit, QWidget, QVBoxLayout, QGridLayout ) -from src.core import funcUser from src.gui import pageHome, pageRegister from src.gui.include import connexionInfo +from src.core.coreUser import core_login def main(mainWindow) -> None: @@ -29,11 +29,12 @@ def main(mainWindow) -> None: leditPassword.setEchoMode(QLineEdit.Password) btnConnexion = QPushButton("Connexion") btnConnexion.clicked.connect( - lambda: funcUser.login( - mainWindow, - leditMail.text(), - leditPassword.text() - ) + lambda: + core_login( + mainWindow, + leditMail.text(), + leditPassword.text() + ) ) LayoutInfoConnexion = QGridLayout() diff --git a/src/gui/pageRegister.py b/src/gui/pageRegister.py index 63cae28..aef8ce1 100644 --- a/src/gui/pageRegister.py +++ b/src/gui/pageRegister.py @@ -3,9 +3,9 @@ from PyQt5.QtWidgets import ( QPushButton, QHBoxLayout, QGroupBox, QLabel, QLineEdit, QWidget, QVBoxLayout, QComboBox, QGridLayout ) -from src.core import funcUser from src.gui import pageHome, pageLogin from src.gui.include import connexionInfo +from src.core.coreUser import core_register def main(mainWindow) -> None: @@ -37,7 +37,7 @@ def main(mainWindow) -> None: btnRegister = QPushButton("S'inscrire") btnRegister.clicked.connect( - lambda: funcUser.register( + lambda: core_register( mainWindow, leditMail.text(), leditPassword.text(), diff --git a/src/gui/windowRecherche.py b/src/gui/windowRecherche.py new file mode 100644 index 0000000..c86bcc9 --- /dev/null +++ b/src/gui/windowRecherche.py @@ -0,0 +1,63 @@ + +from PyQt5.QtWidgets import ( + QDialog, QVBoxLayout, QHBoxLayout, + QLabel, QPushButton, QMessageBox +) +from src.database import dbsearch +# 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 + + +def more_infos(mainWindow, proId): + search: object = dbsearch.DbSearch(mainWindow) + resRecherche: list = search.get_user_info_by_userid(proId)[0][1:] + label: list = [ + "Nom", + "Prénom", + "Diplôme", + "Capacités", + "Description", + "Téléphone", + "Adresse", + "Code postale", + "Ville", + ] + text: list = [] + print(resRecherche) + for i in range(len(resRecherche)): + text.append(f"{label[i]}: {resRecherche[i]}") + + QMessageBox.information( + mainWindow, + "Informations du pro", + "\n".join(text) + ) + +def main(mainWindow: object, results: list) -> None: + dial = 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']: + more_infos(mainWindow, proId) + ) + layoutLine.addStretch() + layoutLine.addWidget(btnInfos) + layoutsResult.append(layoutLine) + + layoutMain = QVBoxLayout() + for layout in layoutsResult: + layoutMain.addLayout(layout) + + dial.setLayout(layoutMain) + dial.show() diff --git a/src/main.py b/src/main.py index a17e39f..f9b9532 100644 --- a/src/main.py +++ b/src/main.py @@ -13,14 +13,14 @@ class mainWindow(QMainWindow): VERSION = 0.1 # Misc mysqlReachable: bool = False - # Utilisateur + # Utilisateur userConnected: bool = False userId: str = "" userEmail: str = "" userInscriptionDate: str = "" userStatus: str = "" def __init__(self) -> None: - super(mainWindow, self).__init__() + super().__init__() # Déclenche l'"__init__" de QMainWindow menu.init(self) pageHome.main(self) |
