summaryrefslogtreecommitdiff
path: root/src/gui/windowUserInfo.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/windowUserInfo.py')
-rw-r--r--src/gui/windowUserInfo.py193
1 files changed, 193 insertions, 0 deletions
diff --git a/src/gui/windowUserInfo.py b/src/gui/windowUserInfo.py
new file mode 100644
index 0000000..ccdcb27
--- /dev/null
+++ b/src/gui/windowUserInfo.py
@@ -0,0 +1,193 @@
+
+from PyQt5.QtWidgets import (
+ QDialog, QGroupBox, QLabel,
+ QLineEdit, QVBoxLayout, QHBoxLayout,
+ QPushButton, QComboBox, QMessageBox
+)
+from src.database.dbuser import DbUser
+from src.database.dbsearch import DbSearch
+
+
+def add_job(jobName: str, jobId: int, listMyJobs: list, layMyJobs: object) -> None:
+ if jobId not in listMyJobs:
+ listMyJobs.append(jobId)
+ lineMyJobs: object = QHBoxLayout()
+ labJob: object = QLabel(jobName)
+ btnRemoveJob: object = QPushButton("Supprimer")
+ btnRemoveJob.clicked.connect(
+ lambda checked, jId=jobId, layItem=lineMyJobs: [
+ listMyJobs.remove(jId),
+ delete_job(layItem)
+ ]
+ )
+ lineMyJobs.addWidget(labJob)
+ lineMyJobs.addStretch()
+ lineMyJobs.addWidget(btnRemoveJob)
+ layMyJobs.addLayout(lineMyJobs)
+
+def delete_job(layLineJob: object) -> None:
+ lab: object = layLineJob.itemAt(0).widget()
+ btn: object = layLineJob.itemAt(2).widget()
+ lab.deleteLater()
+ btn.deleteLater()
+ layLineJob.deleteLater()
+
+def validate(mainWindow: object, dial: object, layoutLines: list, oldJobs: list = None, newJobs: list = None) -> None:
+ user: object = DbUser(mainWindow = mainWindow)
+ userInfos: list = []
+ for i in layoutLines:
+ if i != "selectJobs" and i != "myJobs":
+ lineInput: object = layoutLines[i].itemAt(2).widget()
+ userInfos.append(lineInput.text())
+
+ if mainWindow.userStatus == "Pro":
+ isPro: bool = True
+ else:
+ isPro: bool = False
+
+ if "" in userInfos:
+ QMessageBox.warning(
+ dial,
+ "Mes informations",
+ "Veuillez renseigner tous les champs"
+ )
+ return
+
+ user.update_user_infos(userInfos, mainWindow.userId, isPro, oldJobs, newJobs)
+ QMessageBox.information(
+ dial,
+ "Mes informations",
+ "Modification enregistrée"
+ )
+
+
+# https://stackoverflow.com/questions/3077192/get-a-layouts-widgets-in-pyqt
+def modif_infos(mainWindow: object) -> None:
+ dial: object = QDialog(parent = mainWindow)
+ dial.setWindowTitle("Mes infos")
+
+ search: object = DbSearch(mainWindow)
+ infos: list = search.get_user_info_by_userid(mainWindow.userId)
+
+ if infos:
+ champsClients: dict = {
+ "Nom": infos[0][1],
+ "Prénom": infos[0][2],
+ "Téléphone": infos[0][6],
+ "Addresse": infos[0][7],
+ "Code postal": infos[0][8],
+ "ville": infos[0][9]
+ }
+ champsPro: dict = {
+ "Diplôme": infos[0][3],
+ "Capacités": infos[0][4],
+ "Description": infos[0][5]
+ }
+ else:
+ champsClients: list = [
+ "Nom",
+ "Prénom",
+ "Téléphone",
+ "Addresse",
+ "Code postal",
+ "ville"
+ ]
+ champsPro: list =[
+ "Diplôme",
+ "Capacités",
+ "Description"
+ ]
+
+ layoutLines: list = {}
+ for i in champsClients:
+ layoutLines[i] = QHBoxLayout()
+ layoutLines[i].addWidget(QLabel(i))
+ layoutLines[i].addStretch()
+ if infos:
+ if i == "Téléphone":
+ layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=10))
+ elif i == "Code postal":
+ layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=6))
+ else:
+ layoutLines[i].addWidget(QLineEdit(champsClients[i], maxLength=128))
+ else:
+ if i == "Téléphone":
+ layoutLines[i].addWidget(QLineEdit(maxLength=10))
+ elif i == "Code postal":
+ layoutLines[i].addWidget(QLineEdit(maxLength=6))
+ else:
+ layoutLines[i].addWidget(QLineEdit(maxLength=128))
+
+ if mainWindow.userStatus == "Pro":
+ allJobs: object = search.get_job_all()
+ labSelectJobs: object = QLabel("Les emplois:")
+ cmbAllJobs: object = QComboBox()
+ lineSelectJobs: object = QHBoxLayout()
+ for i in allJobs:
+ cmbAllJobs.addItem(f"{i[2]}", i[0])
+ btnSelectJobs = QPushButton("Ajouter")
+ btnSelectJobs.clicked.connect(
+ lambda :
+ add_job(
+ cmbAllJobs.currentText(),
+ cmbAllJobs.currentData(),
+ newJobs,
+ layMyJobs
+ )
+ )
+ lineSelectJobs.addWidget(labSelectJobs)
+ lineSelectJobs.addStretch()
+ lineSelectJobs.addWidget(cmbAllJobs)
+ lineSelectJobs.addStretch()
+ lineSelectJobs.addWidget(btnSelectJobs)
+ layoutLines["selectJobs"] = lineSelectJobs
+
+ myJobs: object = search.get_pro_job_by_proid(mainWindow.userId)
+ layMyJobs: object = QVBoxLayout()
+ newJobs: list = []
+ for i in myJobs:
+ add_job(i[2], i[0], newJobs, layMyJobs)
+ oldJobs: list = newJobs.copy() # Sinon pointer !!!
+
+ layoutLines["myJobs"] = layMyJobs
+
+ for i in champsPro:
+ layoutLines[i] = QHBoxLayout()
+ layoutLines[i].addWidget(QLabel(i))
+ layoutLines[i].addStretch()
+ if infos:
+ layoutLines[i].addWidget(QLineEdit(champsPro[i], maxLength=256))
+ else:
+ layoutLines[i].addWidget(QLineEdit(maxLength=256))
+
+ modifLayout: object = QVBoxLayout()
+ for i in layoutLines:
+ modifLayout.addLayout(layoutLines[i])
+
+ btnModif: object = QPushButton("modifer")
+ btnModif.clicked.connect(
+ lambda:
+ validate(
+ mainWindow,
+ dial,
+ layoutLines,
+ oldJobs,
+ newJobs
+ ) if mainWindow.userStatus == "Pro"
+ else validate(
+ mainWindow,
+ dial,
+ layoutLines
+ )
+ )
+ layoutBtn: object = QHBoxLayout()
+ layoutBtn.addStretch()
+ layoutBtn.addWidget(btnModif)
+ modifLayout.addLayout(layoutBtn)
+
+ grpMain: object = QGroupBox("Mes infos")
+ grpMain.setLayout(modifLayout)
+ mainLayout: object = QVBoxLayout()
+ mainLayout.addWidget(grpMain)
+ dial.setLayout(mainLayout)
+ dial.show()