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