diff options
Diffstat (limited to 'src/gui/windowUserInfo.py')
| -rw-r--r-- | src/gui/windowUserInfo.py | 193 |
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() |
