summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-04-27 13:17:19 +0200
committerDebulois <quentin@debulois.fr>2022-04-27 13:17:19 +0200
commit5e23fcc7de84adf23ea52ae0858f31b8934fabd3 (patch)
tree7d6217892195c994dc8f42687efd2c74d49bc275
parent6104a59cbdf6474acea6a8a1d4c865f3d88d2296 (diff)
Système de recherche
-rw-r--r--src/core/coreSearch.py43
-rw-r--r--src/core/coreUser.py (renamed from src/core/funcUser.py)8
-rw-r--r--src/core/funcSearch.py3
-rw-r--r--src/gui/pageHome.py18
-rw-r--r--src/gui/pageLogin.py13
-rw-r--r--src/gui/pageRegister.py4
-rw-r--r--src/gui/windowRecherche.py63
-rw-r--r--src/main.py4
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)