summaryrefslogtreecommitdiff
path: root/src/app/windowUserInfo.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/windowUserInfo.py')
-rw-r--r--src/app/windowUserInfo.py199
1 files changed, 199 insertions, 0 deletions
diff --git a/src/app/windowUserInfo.py b/src/app/windowUserInfo.py
new file mode 100644
index 0000000..4455dde
--- /dev/null
+++ b/src/app/windowUserInfo.py
@@ -0,0 +1,199 @@
+
+# https://stackoverflow.com/questions/3077192/get-a-layouts-widgets-in-pyqt
+
+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 core_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),
+ core_delete_job(layItem)
+ ]
+ )
+ lineMyJobs.addWidget(labJob)
+ lineMyJobs.addStretch()
+ lineMyJobs.addWidget(btnRemoveJob)
+ layMyJobs.addLayout(lineMyJobs)
+
+
+def core_delete_job(layLineJob: object) -> None:
+ """"""
+ lab: object = layLineJob.itemAt(0).widget()
+ lab.deleteLater()
+ btn: object = layLineJob.itemAt(2).widget()
+ btn.deleteLater()
+ layLineJob.deleteLater()
+
+
+def core_validate(mainWindow: object, dial: object,
+ layLines: list, oldJobs: list = None, newJobs: list = None) -> None:
+ """"""
+ user: object = DbUser(mainWindow = mainWindow)
+ userInfos: list = []
+ for i in layLines:
+ if i != "selectJobs" and i != "myJobs":
+ lineInput: object = layLines[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"
+ )
+
+
+def window_main(mainWindow: object) -> None:
+ search: object = DbSearch(mainWindow)
+ dial: object = QDialog(parent=mainWindow)
+ dial.setWindowTitle("Mes infos")
+ 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"
+ ]
+
+ layLines: list = {}
+ for i in champsClients:
+ layLines[i] = QHBoxLayout()
+ layLines[i].addWidget(QLabel(i))
+ layLines[i].addStretch()
+ if infos:
+ if i == "Téléphone":
+ layLines[i].addWidget(QLineEdit(champsClients[i], maxLength=10))
+ elif i == "Code postal":
+ layLines[i].addWidget(QLineEdit(champsClients[i], maxLength=6))
+ else:
+ layLines[i].addWidget(QLineEdit(champsClients[i], maxLength=128))
+ else:
+ if i == "Téléphone":
+ layLines[i].addWidget(QLineEdit(maxLength=10))
+ elif i == "Code postal":
+ layLines[i].addWidget(QLineEdit(maxLength=6))
+ else:
+ layLines[i].addWidget(QLineEdit(maxLength=128))
+
+ if mainWindow.userStatus == "Pro":
+ allJobs: object = search.get_job_all()
+ laySelectJobs: object = QHBoxLayout()
+ labSelectJobs: object = QLabel("Les emplois:")
+ cmbAllJobs: object = QComboBox()
+ for i in allJobs:
+ cmbAllJobs.addItem(f"{i[2]}", i[0])
+
+ btnSelectJobs = QPushButton("Ajouter")
+ btnSelectJobs.clicked.connect(
+ lambda :
+ core_add_job(
+ cmbAllJobs.currentText(),
+ cmbAllJobs.currentData(),
+ newJobs,
+ layMyJobs
+ )
+ )
+ laySelectJobs.addWidget(labSelectJobs)
+ laySelectJobs.addStretch()
+ laySelectJobs.addWidget(cmbAllJobs)
+ laySelectJobs.addStretch()
+ laySelectJobs.addWidget(btnSelectJobs)
+ layLines["selectJobs"] = laySelectJobs
+ #
+ myJobs: object = search.get_pro_job_by_proid(mainWindow.userId)
+ layMyJobs: object = QVBoxLayout()
+ newJobs: list = []
+ for i in myJobs:
+ core_add_job(i[2], i[0], newJobs, layMyJobs)
+ oldJobs: list = newJobs.copy() # Sinon pointer !!!
+ layLines["myJobs"] = layMyJobs
+ for i in champsPro:
+ layLines[i] = QHBoxLayout()
+ layLines[i].addWidget(QLabel(i))
+ layLines[i].addStretch()
+ if infos:
+ layLines[i].addWidget(QLineEdit(champsPro[i], maxLength=256))
+ else:
+ layLines[i].addWidget(QLineEdit(maxLength=256))
+
+ layModif: object = QVBoxLayout()
+ for i in layLines:
+ layModif.addLayout(layLines[i])
+
+ btnModif: object = QPushButton("modifer")
+ btnModif.clicked.connect(
+ lambda:
+ core_validate(
+ mainWindow,
+ dial,
+ layLines,
+ oldJobs,
+ newJobs
+ ) if mainWindow.userStatus == "Pro"
+ else core_validate(
+ mainWindow,
+ dial,
+ layLines
+ )
+ )
+ layBtn: object = QHBoxLayout()
+ layBtn.addStretch()
+ layBtn.addWidget(btnModif)
+ layModif.addLayout(layBtn)
+ #
+ grpMain: object = QGroupBox("Mes infos")
+ grpMain.setLayout(layModif)
+ mainLayout: object = QVBoxLayout()
+ mainLayout.addWidget(grpMain)
+ dial.setLayout(mainLayout)
+ dial.show()